Should this inherit from boost::noncopyable? (since you store it as a vector of shared_ptr I'm wondering if that's the intended semantics)