Fix buy() and add NotEnoughCashException