         }
             
         // Some unrecognized key stroke was entered, return. 
-        if (navigationUnit == NavigationUnit.NONE)
+        var navigationUnit:uint = event.keyCode;    
+        if (!NavigationUnit.isNavigationUnit(event.keyCode))
             return; 
             
         // Delegate to the layout to tell us what the next item is we should select or focus into.
         // TODO (jszeto) At some point we should refactor this so we don't depend on layout
         // for keyboard handling. If layout doesn't exist, then use some other keyboard handler
-        var proposedNewIndex:int = layout.getDestinationIndex(navigationUnit, caretIndex); 
+        var proposedNewIndex:int = layout.getNavigationDestinationIndex(caretIndex, navigationUnit); 
         
         // TODO (jszeto) proposedNewIndex depends on CTRL key
         // move CTRL key logic into single selection

            else 
                return [index];
        }
        
        else (shiftKey)
        {
            // A contiguous selection action has occurred. Figure out which new 
            // indices to add to the selection interval and return that. 

    {   
        super.keyDownHandler(event);

        if (!dataProvider || !layout)
            return;
        
