make use of the polymorphic model only when needed