Updates to characters, splitting code into derived classes.