def add_pool_member(hostname, username, password, name, member):
    '''
    A function to connect to a bigip device and add a new member to an existing pool.

    hostname
        The host/address of the bigip device
    username
        The iControl REST username
    password
        The iControl REST password
    name
        The name of the pool to modify
    member
        The member to add to the pool
    '''

    ret = {'name': name, 'changes': {}, 'result': False, 'comment': ''}

    if __opts__['test']:
        return _test_output(ret, 'add', params={
            'hostname': hostname,
            'username': username,
            'password': password,
            'name': name,
            'members': member
        }
        )

    #is this pool member currently configured?
    existing_pool = __salt__['bigip.list_pool'](hostname, username, password, name)

    if existing_pool['code'] == 200:

        # for some reason iControl REST doesn't support listing a single pool member.
        # the response from GET for listing a member will return 200 even if it doesn't exists.
        # because of this we have to do some rather "unnecessary" searching within a pool.

        #what are the current members?
        current_members = existing_pool['content']['membersReference']['items']

        #loop through them
        exists = False
        for current_member in current_members:
            if current_member['name'] == member['name']:
                exists = True
                break

        if exists:
            ret['result'] = True
            ret['comment'] = 'Member: {name} already exists within this pool.  No changes made.'.format(name=member['name'])
            ret['changes']['old'] = {}
            ret['changes']['new'] = {}
        else:
            new_member = __salt__['bigip.add_pool_member'](hostname, username, password, name, member)

            if new_member['code'] == 200:
                ret['result'] = True
                ret['comment'] = 'Member: {name} has been successfully added to the pool.'.format(name=member['name'])
                ret['changes']['old'] = {}

                #look up the member again...
                pool_listing = __salt__['bigip.list_pool'](hostname, username, password, name)

                if pool_listing['code'] != 200:
                    ret = _load_result(new_member, ret)
                    return ret

                members = pool_listing['content']['membersReference']['items']
                #loop through them
                for current_member in members:
                    if current_member['name'] == member['name']:
                        added_member = current_member
                        break

                ret['changes']['new'] = added_member

            # member wasn't added
            else:
                ret = _load_result(new_member, ret)

    #pool does not exists
    elif existing_pool['code'] == 404:
        ret['comment'] = 'A pool with this name was not found.'
    else:
        ret = _load_result(existing_pool, ret)

    return ret