refactored, renamed, rinse, repeat ;)