Seems hackish, we should decouple orders from the pricing info. ... at least have a $product->isFree() method instead