Product is capable of saving itself
Product has errors if save fails
Use a separate function to return all products