TODO.price: updated
price must be > 0
TODO: -1