contract ERC223Receiver {
	 
	struct TKN {
		address sender;
		uint256 value;
		bytes data;
		bytes4 sig;
	}
	
	/**
	 * @dev Fallback function. Our ICO contract should implement this contract to receve ERC23 compatible tokens.
	 * ERC23 protocol checks if contract has implemented this fallback method or not. 
	 * If this method is not implemented then tokens are not sent.
	 * This method is introduced to avoid loss of tokens 
	 *
	 * @param _from The address which will transfer the tokens.
	 * @param _value Amount of tokens received.
	 * @param _data Data sent along with transfer request.
	 */
	function tokenFallback(address _from, uint256 _value, bytes _data) public pure {
		TKN memory tkn;
		tkn.sender = _from;
		tkn.value = _value;
		tkn.data = _data;
		// uint32 u = uint32(_data[3]) + (uint32(_data[2]) << 8) + (uint32(_data[1]) << 16) + (uint32(_data[0]) << 24);
		// tkn.sig = bytes4(u);
	  
		/* tkn variable is analogue of msg variable of Ether transaction
		*  tkn.sender is person who initiated this token transaction   (analogue of msg.sender)
		*  tkn.value the number of tokens that were sent   (analogue of msg.value)
		*  tkn.data is data of token transaction   (analogue of msg.data)
		*  tkn.sig is 4 bytes signature of function
		*  if data of token transaction is a function execution
		*/
	}
}
/**
 * @title ERC23Receiver interface
 * @dev see https://github.com/ethereum/EIPs/issues/223
 */
function tokenFallback(address _from, uint256 _value, bytes _data) public pure {
	TKN memory tkn;
	tkn.sender = _from;
	tkn.value = _value;
	tkn.data = _data;
	// uint32 u = uint32(_data[3]) + (uint32(_data[2]) << 8) + (uint32(_data[1]) << 16) + (uint32(_data[0]) << 24);
	// tkn.sig = bytes4(u);
	  
	/* tkn variable is analogue of msg variable of Ether transaction
	*  tkn.sender is person who initiated this token transaction   (analogue of msg.sender)
	*  tkn.value the number of tokens that were sent   (analogue of msg.value)
	*  tkn.data is data of token transaction   (analogue of msg.data)
	*  tkn.sig is 4 bytes signature of function
	*  if data of token transaction is a function execution
	*/
}

/**
 	 * @dev Fallback function. Our ICO contract should implement this contract to receve ERC23 compatible tokens.
 	 * ERC23 protocol checks if contract has implemented this fallback method or not. 
 	 * If this method is not implemented then tokens are not sent.
 	 * This method is introduced to avoid loss of tokens 
 	 *
 	 * @param _from The address which will transfer the tokens.
 	 * @param _value Amount of tokens received.
 	 * @param _data Data sent along with transfer request.
 	 */