user-provided default constructor