 Many object systems in popular use are based on a design which takes it for granted that an object carries the same type over its entire lifetime, from construction to finalization.This is not a limitation of OOP, but rather of particular implementations only.The following example uses the Common Lisp Object System (CLOS) in which objects can change class without losing their identity.