create Wishlist factory and move all related functionality to the factory