use inner sub balances instead of an 'approve' API, add some tests, add TestTrades, remove old contracts