contract Admin {

    /** @notice (Admin) Event when the contract admin is updated */
    event NewAdmin(address oldAdmin, address newAdmin);

    /** @dev Admin address for this contract */
    address payable internal admin;
    
    modifier adminOnly() {
        //allows only the admin of this contract to call the function
        require(msg.sender == admin, '1');
        _;
    }

        /**
    * @notice Set a new Admin
    * @dev Changes the address for the admin parameter
    * @param _newAdmin address of the new Controller Admin
    */
    function setNewAdmin(address payable _newAdmin) external adminOnly {
        address _oldAdmin = admin;
        admin = _newAdmin;

        emit NewAdmin(_oldAdmin, _newAdmin);
    }
}
/// @author Paladin
function setNewAdmin(address payable _newAdmin) external adminOnly {
    address _oldAdmin = admin;
    admin = _newAdmin;

    emit NewAdmin(_oldAdmin, _newAdmin);
}

/**
 * @notice Set a new Admin
 * @dev Changes the address for the admin parameter
 * @param _newAdmin address of the new Controller Admin
 */