refactor to make make more manageable