[WIP] Stage 1: introduction.
Simplify stage 1 and start stage 2
Finish stage 2 inheritance stuff
Finish stage 2