Payments are restricted to only one token, and if a token is defined
Any reason for not being multitoken? If I have a bounty contract and I want to send some valuable, rare and fun tokens to be rewarded, such as SNT, ETH, GNT, BEER, Unicorns and DAO.
This can lead to unknown behavior of external token calls. If unknown tokens are called, they might throw or return unexpected values. An idea would be to create an array of accepted tokens, or turn design into that this would never be an issue (no one would care about an unknown buggy "token", so it will be ignored into the blockchain.
A whitelist of tokens is probably the right answer... The more i think about this, the more I like the idea of ripping the payment struct and the whitelist out of this contract and into an external contract