function distribute(address[] _receivers, uint256[] _amounts) public returns (bool) {
    require(block.timestamp > lockups[msg.sender]);
    require(_receivers.length > 0);
    require(_amounts.length > 0);
    require(_receivers.length == _amounts.length);

    uint256 _total = 0;

    for (uint256 i = 0; i < _receivers.length; i++) {
      require(_receivers[i] != address(0));
      require(block.timestamp > lockups[_receivers[i]]);
      require(_amounts[i] > 0);
      _total = _total.add(_amounts[i]);
    }

    require(_total <= balances[msg.sender]);

    balances[msg.sender] = balances[msg.sender].sub(_total);

    for (i = 0; i < _receivers.length; i++) {
      balances[_receivers[i]] = balances[_receivers[i]].add(_amounts[i]);
      emit Transfer(msg.sender, _receivers[i], _amounts[i]);
    }

    return true;
  }