Some refactoring to remove unnecessary classes and convert CartItem from an abstract class.