remove boost dependence
use unique_ptr to manage engine components