Initial rewrite with Moose