direct constructor initialization