cleanup, changed parent to polymorphic