Using Single and Multiple abstract subclasses