restructured object.hpp template parameters