Replace Type Code with Subclasses

You have an immutable type code that affects the behavior of a class.

Replace the type code with subclasses.

For more inforamtion see page 223 of Refactoring