architecture refactor