refactor and move override