Approach 1 - subtype polymorphism
Using typeclass
Full typeclass pattern
Make minor modifications
Use implicit conversion