Attempt to have a big separation of concerns