Refactor to use Moo, tidy