as discussed together can be refactor to be more readable