Replaced Type Code with State/Strategy with using Self Encapsulate Field