this is starting to look more right
refactor