function transferFrom(
    address _from,
    address _to,
    uint256 _value
  )
    public
    returns (bool)
  {
    require(_value <= dataContract.balances(_from));
    require(_value <= allowed[_from][msg.sender]);
    require(_to != address(0));

    dataContract.setBalance(_from, dataContract.balances(_from).sub(_value));
    dataContract.setBalance(_to, dataContract.balances(_to).add(_value));
    allowed[_from][msg.sender] = allowed[_from][msg.sender].sub(_value);
    emit Transfer(_from, _to, _value);
    return true;
  }