Add boost::noncopyable to some and move to more engine-like structure