support default constructor