 		# CUI.debug "selecting node", sel_node
 
 		do_select = =>
-			@getRoot().selectedNode = @
+			@setSelectedNode(@)
 			# CUI.error "openUpwards", @getNodeId(), @is_open
 			@openUpwards()
 			.done =>
-				@getTree().rowAddClass(@getRowIdx(), ListViewRow.defaults.selected_class)
+				@addSelectedClass()
 				@selected = true
 				dfr.resolve()
 			.fail(dfr.reject)
 
 		# the selected node is not us, so we ask the other
 		# node
-		sel_node = @getRoot().selectedNode
+		sel_node = @getSelectedNode()
 
 		if sel_node
 			sel_node.check_deselect(ev)

	isSelected: ->
		!!@selected

	select: (ev) ->
		dfr = new CUI.Deferred()
		if ev and @getTree?().isSelectable()


		@check_deselect(ev, new_node)
		.done =>
			@setSelectedNode()
			@removeSelectedClass()
			@selected = false
			@getTree().triggerNodeDeselect(ev, @)

