contract ERC223 {
    uint public totalSupply;

    // ERC223 functions and events
    function balanceOf(address who) public constant returns (uint);
    function totalSupply() constant public 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 customFallback) public returns (bool ok);
    event Transfer(address indexed from, address indexed to, uint value, bytes indexed data);

    // ERC223 functions
    function name() constant public returns (string _name);
    function symbol() constant public returns (string _symbol);
    function decimals() constant public returns (uint8 _decimals);

    
    function transferFrom(address _from, address _to, uint256 _value) returns (bool success);
    //function approve(address _spender, uint256 _value) returns (bool success);
   // function allowance(address _owner, address _spender) constant returns (uint256 remaining);
    event Transfer(address indexed _from, address indexed _to, uint256 _value);
   // event Approval(address indexed _owner, address indexed _spender, uint _value);
     event Burn(address indexed from, uint256 value);
}
function balanceOf(address who) public constant returns (uint);

// ERC223 functions and events