refactoring basket object and adding functionality to be able to subscribe to a data vo