move to actual priority queue. manage queue via thread pool and single polling thread to avoid race conditions via reading. remove activity abstraction because probably not needed. modify UnitCreationOrder to show how new stuff might be used instead