def uservenue_factory(userinfo_param, j_venue_param, checkin_guid_list_param, checkin_list_param, is_unique_param):
   new_uservenue = UserVenue(parent=userinfo_param, location = db.GeoPt(j_venue_param['location']['lat'], j_venue_param['location']['lng']))
   j_venue_param_loc = j_venue_param['location']
   new_uservenue.update_location()
   new_uservenue.user = userinfo_param.user
   new_uservenue.venue_guid     = str(j_venue_param['id'])
   if 'name' in j_venue_param:
     new_uservenue.name         = j_venue_param['name']
   if 'address' in j_venue_param_loc:
     new_uservenue.address      = j_venue_param_loc['address'].replace('\n', ' ').replace('\r', ' ')
   if 'cross_street' in j_venue_param_loc:
     new_uservenue.cross_street = j_venue_param_loc['cross_street']
   if 'state' in j_venue_param_loc:
     new_uservenue.state        = j_venue_param_loc['state']
   if 'zip' in j_venue_param_loc:
     new_uservenue.zipcode      = j_venue_param_loc['zip']
   if 'phone' in j_venue_param:
     new_uservenue.phone        = j_venue_param['phone']
   new_uservenue.has_parent = True
   new_uservenue.is_unique = is_unique_param 
   new_uservenue.checkin_list = checkin_list_param
   new_uservenue.checkin_guid_list = checkin_guid_list_param
   if not new_uservenue.checkin_guid_list or len(new_uservenue.checkin_guid_list) is 0:
     new_uservenue.checkin_guid_list = [str(checkin_id) for checkin_id in new_uservenue.checkin_list]
   return new_uservenue
             uservenue.name         = j_venue['name']
           try:
             if 'address' in j_venue:
               uservenue.address      = j_venue['address']
           except BadValueError:
             logging.error("Address not added for venue %s with address json '%s'" % (j_venue['id'], j_venue['address']))
           if 'cross_street' in j_venue:
             uservenue.cross_street = j_venue['cross_street']
           # if 'city' in j_venue:
           #   uservenue.city         = j_venue['city']
           if 'state' in j_venue:
             uservenue.state        = j_venue['state']
           if 'zip' in j_venue:
             uservenue.zipcode      = j_venue['zip']
           if 'phone' in j_venue:
             uservenue.phone        = j_venue['phone']
         uservenue.last_updated = datetime.strptime(checkin['created'], "%a, %d %b %y %H:%M:%S +0000") #WARNING last_updated is confusing and should be last_checkin_at
         if datetime.now() < uservenue.last_updated + timedelta(hours=12):  continue #WARNING last_updated is confusing and should be last_checkin_at
         uservenue.checkin_list.append(checkin['id'])
         uservenue.put()
         userinfo.checkin_count += 1
         if checkin['id'] > userinfo.last_checkin: userinfo.last_checkin = checkin['id'] # because the checkins are ordered with most recent first!
         userinfo.put()
         num_added += 1
     #   else: # there's nothing we can do without a venue id or a lat and a lng
     #     logging.info("Problematic j_venue: " + str(j_venue))
     # else:
     #   logging.info("No venue in checkin: " + str(checkin))
 except KeyError:
   logging.error("There was a KeyError when processing the response: " + response.content)
   raise