Initial commit. Hackish, with multiple inheritance experiment/mess.