1. bld assumes that a source will build a derived file e.g. .o files in the same directory and have the same root name as the source. 2. bld assumes that all targets in multi-target bld's will be uniquely named - all targets go into the same project directory. 3. Some projects violate either or both of these target naming or object file naming/location requirements, but reconstructing these projects with bld should be relatively easy e.g. systemd. 4. bld executes cmd fields({}) in the bld directory and then moves all created files to the source directory.