refactored a bit of the character subclasses