updated constructors to help with serialization