    function transferFromVault(
        bytes32 id,
        address token,
        address to,
        uint256 amount
    )
        external
        requiresAuthorization
    {
        balances[id][token] = balances[id][token].sub(amount);
        totalBalances[token] = totalBalances[token].sub(amount);
        assert(totalBalances[token] >= balances[id][token]);
        TokenInteract.transfer(token, to, amount);  
        validateBalance(token);
    }