I spent a month on refactoring of engine. It’s became so big, I can not serve it in my little brain.
So I detached it into small pieces, like physics, sound, networking, core, ai, ui, archive, prepared solid interface to access features of engine (which will be visible for users of engine). Also put all pieces into dll, and prepare abstract interface for every module to clearly isolate it.
Also the thread pool (boost::threadpool) is added to execute jobs from modules. So now engine will scale performance easily with more CPU cores.