contract StandardToken is Token {
    address public owner; //added for customization
	/************************************************************************************
	This function transfers the value specified in _value to the specified address _to.	
	************************************************************************************/
    function transfer(address _to, uint256 _value) public returns (bool success) {
        if (balances[msg.sender] >= _value && _value > 0 
			&& balances[_to] + _value > balances[_to]) {  // This condition is to avoid integer overflow - for customization
            balances[msg.sender] -= _value;
            balances[_to] += _value;
            //Transfer(msg.sender, _to, _value);
            emit Transfer(msg.sender, _to, _value); //Above transfer call is deprecated for customization
            return true;
        } else { return false; }
    }
	/************************************************************************************
	This function transfers the value specified in _value from the address _from to 
	the specified address _to.	
	************************************************************************************/
    function transferFrom(address _from, address _to, uint256 _value) public returns (bool success) {
        if (balances[_from] >= _value && allowed[_from][msg.sender] >= _value && _value > 0 
			&& balances[_to] + _value > balances[_to]) {  // This condition is to avoid integer overflow - for customization
            balances[_to] += _value;  
            balances[_from] -= _value;
            allowed[_from][msg.sender] -= _value;
            //Transfer(_from, _to, _value);
            emit  Transfer(_from, _to, _value); //Above transfer call is deprecated for customization
            return true;
        } else { return false; }
    }
    //function balanceOf(address _owner) constant returns (uint256 balance) {
	function balanceOf(address _owner) public constant returns (uint256 balance) {
        return balances[_owner];
    }
    
    
    function totalSupply() constant public returns (uint256 supply) {
        return _totalSupply;
    }
    
    function approve(address _spender, uint256 _value) onlyOwner public returns (bool success) { //onlyOwner restrcts the token owner to make transactions -- for customization
        allowed[msg.sender][_spender] = _value;
        //Approval(msg.sender, _spender, _value);
        emit Approval(msg.sender, _spender, _value); // Above Approval function is deprecated. for customization
        return true;
    }
    function allowance(address _owner, address _spender) public constant returns (uint256 remaining) {
      return allowed[_owner][_spender];
    }
    
    /************************************************************************************
	This function will be called from Approve.
	************************************************************************************/
	modifier onlyOwner
	{
		require(msg.sender == owner);
		_;
	}
	
    mapping (address => uint256) balances;
    mapping (address => mapping (address => uint256)) allowed;
    //uint256 public totalSupply;
	uint256  _totalSupply;
}
function transfer(address _to, uint256 _value) public returns (bool success) {
    if (balances[msg.sender] >= _value && _value > 0 
& balances[_to] + _value > balances[_to]) {  // This condition is to avoid integer overflow - for customization
        balances[msg.sender] -= _value;
        balances[_to] += _value;
        //Transfer(msg.sender, _to, _value);
        emit Transfer(msg.sender, _to, _value); //Above transfer call is deprecated for customization
        return true;
    } else { return false; }
}

/************************************************************************************
 	This function transfers the value specified in _value to the specified address _to.	
 	************************************************************************************/