Snow; Types; better implementations for #37, wasn't aware of enum abstracts (thanks @dazKind)