The Person is an Actor
class person : public actor {
public:
person(); to create a person
void become(Role r); to become a ...
void become(actor* p); change identity
int exists() { return role[Person] != this; }
actor* self() { return exists()?role[Person]->self():role [ role] ; }
private:
int _role;
actor* role[Final+1]; the repertoire
};