splitting some shared display logic out of ProductService into it's own service