done with polymorphic jackson