contract Ownable {

    address public owner;
    event OwnershipChanged(address indexed prevOwner, address indexed newOwner);

    function Ownable() public {
        owner = msg.sender;
    }

    /// @dev Throws if called by any account other than the owner.
    modifier onlyOwner() {
        require(msg.sender == owner);
        _;
    }

    /// @notice Allows the current owner to transfer control of the contract to a newOwner.
    /// @param _newOwner 
    /// @return true/false
    function changeOwnership(address _newOwner) public onlyOwner returns (bool) {
        require(_newOwner != address(0));
        require(_newOwner != owner);
        emit OwnershipChanged(owner, _newOwner);
        owner = _newOwner;
        return true;
    }
}
/// @title Ownable
function changeOwnership(address _newOwner) public onlyOwner returns (bool) {
    require(_newOwner != address(0));
    require(_newOwner != owner);
    emit OwnershipChanged(owner, _newOwner);
    owner = _newOwner;
    return true;
}

/// @notice Allows the current owner to transfer control of the contract to a newOwner.
/// @param _newOwner 
/// @return true/false