refactor construct-method