type system is now a prototype pattern