Added abstract override modifier to implemented methods
Fixed the macro to work with type classes using inheritance