По-моему слишком сложно и сразу много всего. Я бы сначала сделал только многопоточные NEW/сборку мусора, да выделил в отдельный модуль процедуры управления потоками. А уж потом на это дело навешивал слабые указатели и "детали".
Что касается модуля Ao - ну прямо просится в псевдомодули.