Initial code. I'm not sure if this version compiles.