lots of cleanup - all __init__ functions define 'self' variables at runtime, not at class level