Futher cleanup; reduce polymorphism