much refactor
super nice