diff --git a/ui (gen4)/lib/widget/browse.html b/ui (gen4)/lib/widget/browse.html
index 5891d0f3..5ffd6f49 100755
--- a/ui (gen4)/lib/widget/browse.html	
+++ b/ui (gen4)/lib/widget/browse.html	
@@ -160,9 +160,24 @@ TREE.dir_c.dir_b.tree = TREE
 var use_disabled = true
 var show_files = false
 
+requirejs.config({
+	paths: {
+		'lib/object': '../../node_modules/ig-object/object',
+		'lib/actions': '../../node_modules/ig-actions/actions',
+		'lib/features': '../../node_modules/ig-features/features',
+		//'lib/keyboard': '../../node_modules/ig-keyboard/keyboard',
+	},	
+	map: {
+		'*': {
+			'../object': 'lib/object',
+		},
+	},
+})
+
+
 requirejs([
 			'../keyboard', 
-			'../object', 
+			'lib/object', 
 			'../toggler', 
 			'./browse'
 		], function(k, o, t, br){
diff --git a/ui (gen4)/lib/widget/browse2.html b/ui (gen4)/lib/widget/browse2.html
index 45313404..cfef22f3 100755
--- a/ui (gen4)/lib/widget/browse2.html	
+++ b/ui (gen4)/lib/widget/browse2.html	
@@ -158,6 +158,7 @@ requirejs.config({
 		'lib/object': '../../node_modules/ig-object/object',
 		'lib/actions': '../../node_modules/ig-actions/actions',
 		'lib/features': '../../node_modules/ig-features/features',
+		'lib/walk': '../../node_modules/generic-walk/walk',
 		//'lib/keyboard': '../../node_modules/ig-keyboard/keyboard',
 	},	
 	map: {
diff --git a/ui (gen4)/lib/widget/browse2.js b/ui (gen4)/lib/widget/browse2.js
index bd59c9e4..86815fa8 100755
--- a/ui (gen4)/lib/widget/browse2.js	
+++ b/ui (gen4)/lib/widget/browse2.js	
@@ -11,10 +11,7 @@ var toggler = require('../toggler')
 var keyboard = require('../keyboard')
 var object = require('../object')
 var widget = require('./widget')
-
-// XXX
-//var walk = require('lib/walk')
-var walk = require('../../node_modules/generic-walk/walk').walk
+var walk = require('lib/walk').walk
 
 
 
@@ -2984,9 +2981,10 @@ var BrowserPrototype = {
 		// Setup basic event handlers...
 		// keyboard...
 		d.addEventListener('keydown', 
-			keyboard.makePausableKeyboardHandler(this.keyboard,
-				function(){ console.log('KEY:', ...arguments) },//null,
-	 			this))
+			this.__keyboard_handler = this.__keyboard_handler 
+				|| keyboard.makePausableKeyboardHandler(this.keyboard,
+					function(){ console.log('KEY:', ...arguments) },//null,
+					this))
 		// focus...
 		d.addEventListener('click', 
 			function(e){ 
@@ -3025,14 +3023,9 @@ var BrowserPrototype = {
 	//
 	// XXX instrument interactions...
 	// XXX register event handlers...
-	// XXX BUG: scrollbar in list can get focus and intercept key events...
-	// 			- document.querySelector(':focus') returns null
-	//			- does not reproduce in the ImageGrid.Viewer
-	//			- scrollbar styling does not seem to affect this...
-	//		to reproduce:
-	//			- load a scrolled dialog...
-	//			- click on the scrollbar
-	//				- now the browser does not get key events
+	// XXX HANCK: preventing scrollbar from grabbing focus -- there is 
+	// 		definitely a better solution implemented in browse.js + ImageGrid
+	// 		(the effect seems to be originating out of ImageGrid...)
 	renderList: function(items, context){
 		var that = this
 		var options = context.options || this.options
@@ -3049,6 +3042,13 @@ var BrowserPrototype = {
 		// list...
 		var list = document.createElement('div')
 		list.classList.add('list', 'v-block')
+		// XXX HACK: prevent scrollbar from grabbing focus...
+		list.addEventListener('mousedown', 
+			function(){
+				setTimeout(function(){
+					that.focused 
+						&& !list.querySelector(':focus')
+						&& that.focused.dom.focus() }, 0) })
 		items
 			.forEach(function(item){
 				list.appendChild(item instanceof Array ?