cleanups
refactoring to avoid multiple inheritance