stage construction refactor