fix separation of concerns