decouple instances from subtypes