add extend constructor function