consider returning self.total_price