refactor: more functional style & colorful output

This is in preparation for #1