resource allocation methods