contract ERC223 {
  uint public totalSupply;
  function balanceOf(address who) public view returns (uint);

// redundant as public accessors are automatically assigned   
//  function name() public view returns (string _name);
//  function symbol() public view returns (string _symbol);
//  function decimals() public view returns (uint8 _decimals);
//  function totalSupply() public view returns (uint256 _supply);

  function transfer(address to, uint value) public returns (bool ok);
  function transfer(address to, uint value, bytes data) public returns (bool ok);
  function transfer(address to, uint value, bytes data, string custom_fallback) public returns (bool ok);
  
  //event Transfer(address indexed from, address indexed to, uint value, bytes indexed data);
  event Transfer(address indexed from, address indexed to, uint256 value);
  event Approval(address indexed _owner, address indexed _spender, uint256 _value);
}
/* New ERC223 contract interface */
function transfer(address to, uint value) public returns (bool ok);

// redundant as public accessors are automatically assigned   
//  function name() public view returns (string _name);
//  function symbol() public view returns (string _symbol);
//  function decimals() public view returns (uint8 _decimals);
//  function totalSupply() public view returns (uint256 _supply);