add extend and create method