Port to Moo

Don't merge this yet, it still needs documentation.