do it right with polymorphic