a1 working
type class implemented without touching class definition
not trying A2 completely...