contract ERC20Interface {
	/// @notice Get the total token supply
	function totalSupply() constant returns (uint256 totalAmount);

	/// @notice  Get the account balance of another account with address _owner
	function balanceOf(address _owner) constant returns (uint256 balance);

	/// @notice  Send _value amount of tokens to address _to
	function transfer(address _to, uint256 _value) returns (bool success);

	/// @notice  Send _value amount of tokens from address _from to address _to
	function transferFrom(address _from, address _to, uint256 _value) returns (bool success);

	/// @notice  Allow _spender to withdraw from your account, multiple times, up to the _value amount.
	/// @notice  If this function is called again it overwrites the current allowance with _value.
	/// @notice  this function is required for some DEX functionality
	function approve(address _spender, uint256 _value) returns (bool success);

	/// @notice  Returns the amount which _spender is still allowed to withdraw from _owner
	function allowance(address _owner, address _spender) constant returns (uint256 remaining);

	/// @notice  Triggered when tokens are transferred.
	event Transfer(address indexed _from, address indexed _to, uint256 _value);

	/// @notice  Triggered whenever approve(address _spender, uint256 _value) is called.
	event Approval(address indexed _owner, address indexed _spender, uint256 _value);
 }
// ERC Token Standard #20 Interface
// https://github.com/ethereum/EIPs/issues/20
function approve(address _spender, uint256 _value) returns (bool success);

/// @notice  Allow _spender to withdraw from your account, multiple times, up to the _value amount.
/// @notice  If this function is called again it overwrites the current allowance with _value.
/// @notice  this function is required for some DEX functionality