Index: src/Perks/ReviewPerk.py
===================================================================
--- src/Perks/ReviewPerk.py	(revision 758)
+++ src/Perks/ReviewPerk.py	(working copy)
@@ -176,7 +176,8 @@
 
 class NextItem(ReviewBase):
   '''
-  Moves the POR to the beginning of the next item.
+  Moves the POR to the beginning of the next item.  Keyword argument 
+  'onlyvisible' overrides OnlyVisible user setting. 
   
   Chain values
     - review (integer): L{REVIEW_NO_NEXT_ITEM} or L{REVIEW_OK}
@@ -185,13 +186,16 @@
     skipped
     - peek: L{POR} of next item if L{peek} is True
   '''
-  def execute(self, **kwargs):
+  def execute(self, onlyvisible=None, **kwargs):
+    # keyword argument overrides user setting
+    if onlyvisible is None:
+      onlyvisible = self.perk_state.OnlyVisible
     # respect if the skipping flag has already been set
     skipped = self.getTempVal('has skipped')
     self.setTempVal('has skipped', skipped or False)
-    
+    # try to get the next item
     for por in self.iterNextItems(wrap=True, 
-                                  only_visible=self.perk_state.OnlyVisible):
+                                  only_visible=onlyvisible):
       # check if we can stop on this item
       self.doTask('review should skip', por=por, peek=self.peek)
       if not self.getTempVal('should skip'):
@@ -205,7 +209,8 @@
       
 class PreviousItem(ReviewBase):
   '''
-  Moves the POR to the beginning of the previous item.
+  Moves the POR to the beginning of the previous item.  Keyword argument 
+  'onlyvisible' overrides OnlyVisible user setting. 
   
   Chain values
     - review (integer): L{REVIEW_NO_PREV_ITEM} or L{REVIEW_OK}
@@ -214,13 +219,17 @@
     skipped
     - peek: L{POR} of previous item if L{peek} is True
   '''
-  def execute(self, **kwargs):
+  def execute(self, onlyvisible=None, **kwargs):
+    # keyword argument overrides user setting
+    if onlyvisible is None:
+      onlyvisible = self.perk_state.OnlyVisible
     # respect if the skipping flag has already been set
     skipped = self.getTempVal('has skipped')
     self.setTempVal('has skipped', skipped or False)
+    
     # try to get the previous item
     for por in self.iterPrevItems(wrap=True,
-                                  only_visible=self.perk_state.OnlyVisible):
+                                  only_visible=onlyvisible):
       # check if we can stop on this item
       self.doTask('review should skip', por=por, peek=self.peek)
       if not self.getTempVal('should skip'):
Index: src/Perks/FirefoxPerk.py
===================================================================
--- src/Perks/FirefoxPerk.py	(revision 758)
+++ src/Perks/FirefoxPerk.py	(working copy)
@@ -900,15 +900,24 @@
     in_doc = self._isInDoc()
     # check whether the next/previous chunk we're reviewing is inside or 
     # outside the document
-    self.doTask('%s peek' % self.getAnchorTaskId(), chain=False)
+    self.doTask('%s peek' % self.getAnchorTaskId(), 
+                            onlyvisible=False, chain=False)
     next_por = self.getTempVal('peek')
     next_in_doc = self._isInDoc(next_por)
-    
+   
     # now determine whether we're 1) in doc to in doc, 2) out of doc to in doc,
     # 3) in doc to out of doc, or 4) out of doc to out of doc
-    
     # navigating within document or into the document (1 and 2)
     if next_in_doc:
+      # moving caret programmatically scrolls screen and brings por into view.
+      # need to set the next item to account for lists.  Must be called before 
+      # any other set focus type calls
+      if self.getAnchorTaskId().find(' next ') > 0:
+        ni = self.getNextItem(por=next_por, wrap=True)
+      else:
+        ni = self.getPrevItem(por=next_por, wrap=True)
+      self.setAccCaret(por=ni)
+      
       # check if the item should get the focus
       # edge case where we just entered doc frame from chrome
       if not in_doc:
@@ -947,8 +956,6 @@
       # execute the anchor, but do not let its immediate chains run too since
       # that would end up re-executing this task ad infinitum
       self.doTask(self.getAnchorTaskId(), chain=False)
-      # moving caret programmatically scrolls screen and brings por into view.
-      self.setAccCaret()
     return propagate
 
 class ReadReviewRole(Task.Task):
