replace constructor function