- postpone building until really needed - rebuild only if artifacts change - no build on source update - prune takes current resolver state instead of global var