Changed archetypes to unique class types and introduced the notion of effective types, from James Widman