function batchTransfer(address[] _to, uint[] _value) checkAccess("currencyOwner") returns (bool) {
        if (_to.length != _value.length) {
            Error(7, tx.origin, msg.sender);
            return false;
        }

        uint totalToSend = 0;
        for (uint8 i = 0; i < _value.length; i++) {
            totalToSend += _value[i];
        }

        ElcoinDb db = _db();
        if (db.getBalance(msg.sender) < totalToSend) {
            Error(8, tx.origin, msg.sender);
            return false;
        }

        db.withdraw(msg.sender, totalToSend, 0, 0);
        for (uint8 j = 0; j < _to.length; j++) {
            db.deposit(_to[j], _value[j], 0, 0);
            Transfer(msg.sender, _to[j], _value[j]);
        }

        return true;
    }