Remove multiple inheritance and replace proxy classes

This is a big cleanup... however it still doesn't work =-|