I saw that selectionIntervalFor: uses selectionParseTreeIntervalFor: aString | parseTree answerBlock | parseTree := RBParser parseMethod: aString onError: [ :str :pos | ^ nil ]. answerBlock := [ :aNode :answer | ^ aNode sourceInterval ]. self searchStrings do: [ :each | | matcher tree | matcher := RBParseTreeSearcher new. matcher matchesTree: (RBLiteralNode value: each) do: answerBlock. each isSymbol ifTrue: [ tree := RBParseTreeSearcher buildSelectorTree: each. tree notNil ifTrue: [ matcher matchesTree: tree do: answerBlock ] ] ifFalse: [ tree := RBVariableNode named: each. matcher matchesTree: tree do: answerBlock; matchesArgumentTree: tree do: answerBlock ]. matcher executeTree: parseTree ]. ^ nil and I was wondering where is used the selectionIntervalFor: Then I saw that BrowserEnvironmentWrapper introduces environment (which is good) Now the superclass uses directly Smalltalk globals so may be this would be good to move enviroment above this way we can have a selection of the environemt as in BrowserEnvironment and also have a browser that can browse a remote environment. Stef