contract BasicToken is ERC20Basic {
    
    // use SafeMath to avoid uint256 overflow
	using SafeMath for uint256;

    // balances of every address
	mapping(address => uint256) balances;

	// total number of token
	uint256 totalSupply_;

    // return total number of token
	function totalSupply() public view returns (uint256) {
		return totalSupply_;
	}

	// transfer _value tokens to _to from msg.sender
	function transfer(address _to, uint256 _value) public returns (bool) {
	    // if you want to destroy tokens, use burn replace transfer to address 0
		require(_to != address(0));
		// can not transfer to self
		require(_to != msg.sender);
		require(_value <= balances[msg.sender]);

		// SafeMath.sub will throw if there is not enough balance.
		balances[msg.sender] = balances[msg.sender].sub(_value);
		balances[_to] = balances[_to].add(_value);
		emit Transfer(msg.sender, _to, _value);
		return true;
	}

	// return _owner how many tokens
	function balanceOf(address _owner) public view returns (uint256 balance) {
		return balances[_owner];
	}

}
function balanceOf(address _owner) public view returns (uint256 balance) {
	return balances[_owner];
}

// return _owner how many tokens