refactor constructors, and make sure correct default or copy constructor is called