change the Character class to an abstract class