To prevent front-running attacks by miners, we should add a minReturn parameter to the buy and sell functions and appropriate tests.
The fallback contract should call buy(MAX_RETURN) where MAX_RETURN is some constant value putting a limit on how many tokens one can buy via fallback function — open to other options here.