Yak shaving
Basically done
Moved types to files
Implemented main