finished abstract class Character