midstage OO refactor