Separate ports in categories to-build: stuff to be built eventually queue: stuff that CAN be built (dependencies accounted for) packages: stuff that was built As soon as queue fills up, we start building. Keep queue happy if a core is free, we want to build stuff