refac type hierachy and get basic object registration working