diff --git a/org.eclipse.babel.core/src/org/eclipse/babel/core/message/manager/RBManager.java b/org.eclipse.babel.core/src/org/eclipse/babel/core/message/manager/RBManager.java
index b9f4a46..f399d7d 100644
--- a/org.eclipse.babel.core/src/org/eclipse/babel/core/message/manager/RBManager.java
+++ b/org.eclipse.babel.core/src/org/eclipse/babel/core/message/manager/RBManager.java
@@ -395,7 +395,7 @@
             INSTANCE = new RBManager();
             INSTANCE.project = project;
             managerMap.put(project, INSTANCE);
-            INSTANCE.detectResourceBundles();
+            //INSTANCE.detectResourceBundles();
 
             refactorService = getRefactoringService();
         }
@@ -522,6 +522,7 @@
     /**
      * Detects all resource bundles, which we want to work with.
      */
+    @Deprecated
     protected void detectResourceBundles() {
         try {
             project.accept(new ResourceBundleDetectionVisitor(this));
@@ -555,7 +556,7 @@
             MessagesBundleGroupFactory.createBundleGroup(resource);
 
             logger.log(Level.INFO, "addBundleResource (passive loading): "
-                    + resource.getName());
+                    + resourceBundleId + " (" + resource.getName() + ")");
         }
     }
 
diff --git a/org.eclipse.babel.core/src/org/eclipse/babel/core/message/strategy/PropertiesFileGroupStrategy.java b/org.eclipse.babel.core/src/org/eclipse/babel/core/message/strategy/PropertiesFileGroupStrategy.java
index 51657c6..53f6d71 100644
--- a/org.eclipse.babel.core/src/org/eclipse/babel/core/message/strategy/PropertiesFileGroupStrategy.java
+++ b/org.eclipse.babel.core/src/org/eclipse/babel/core/message/strategy/PropertiesFileGroupStrategy.java
@@ -177,15 +177,14 @@
         if (this.file.getAbsolutePath().contains(path.toOSString())) {
             fullPath = new Path(this.file.getAbsolutePath());
         } else {
-            fullPath = new Path(path.toOSString() + this.file.getAbsolutePath());
+            fullPath = new Path(/*path.toOSString() +*/ this.file.getAbsolutePath());
         }
 
         IFile file = ResourcesPlugin.getWorkspace().getRoot()
                 .getFileForLocation(fullPath);
 
         if (file != null) {
-            return ResourcesPlugin.getWorkspace().getRoot()
-                    .getProject(file.getFullPath().segments()[0]).getName();
+            return ResourcesPlugin.getWorkspace().getRoot().getProject(file.getFullPath().segments()[0]).getName();
         } else {
             return null;
         }
diff --git a/org.eclipse.babel.editor/messages.properties b/org.eclipse.babel.editor/messages.properties
index 01f6ed1..21b2a15 100644
--- a/org.eclipse.babel.editor/messages.properties
+++ b/org.eclipse.babel.editor/messages.properties
@@ -20,7 +20,7 @@
 dialog.similar.body            = Below are keys having similar value as key "{0}" within the locale "{1}":
 dialog.similar.head            = Similar value(s) found.
 
-editor.content.desc         = Editor for ResourceBundle:
+editor.content.desc         = Editor for Resource Bundle:
 editor.default              = Default
 editor.i18nentry.rootlocale.label   = Default
 editor.i18nentry.resourcelocation = Resource location: {0}
@@ -34,7 +34,7 @@
 editor.wiz.bundleName       = &Base Name:
 editor.wiz.creating         = Creating
 editor.wiz.createfolder     = The folder "%s" does not exist. Do you want to create it?
-editor.wiz.desc             = This wizard creates a set of new files with *.properties extension that can be opened by the ResourceBundle editor.
+editor.wiz.desc             = This wizard creates a set of new files with *.properties extension that can be opened by the Resource Bundle editor.
 editor.wiz.error.bundleName = Base name must be specified.
 editor.wiz.error.container  = Files container must be specified.
 editor.wiz.error.locale     = At least one Locale must be added.
@@ -48,7 +48,7 @@
 editor.wiz.remove           = <-- Remove
 editor.wiz.selectFolder     = Select a folder
 editor.wiz.selected         = Selected locales
-editor.wiz.title            = ResourceBundle (Properties Files)
+editor.wiz.title            = Resource Bundle (Properties Files)
 
 error.init.badencoding     = Malformed \\uxxxx encoding found in this string:
 error.init.ui              = Cannot initialize visual component.
diff --git a/org.eclipse.babel.tapiji.tools.core.ui/OSGI-INF/l10n/bundle.properties b/org.eclipse.babel.tapiji.tools.core.ui/OSGI-INF/l10n/bundle.properties
index 159477e..32bcadd 100644
--- a/org.eclipse.babel.tapiji.tools.core.ui/OSGI-INF/l10n/bundle.properties
+++ b/org.eclipse.babel.tapiji.tools.core.ui/OSGI-INF/l10n/bundle.properties
@@ -1,7 +1,7 @@
 #Properties file for org.eclipse.babel.tapiji.tools.core.ui
 extension.name = Internationalization Nature
 category.name = Internationalization
-view.name = Resource-Bundle
+view.name = Resource Bundle
 menu.label = Internationalization
 menu.tooltip = Java Internationalization assistance
 filter.description = Filters only resource bundles
diff --git a/org.eclipse.babel.tapiji.tools.core.ui/src/org/eclipse/babel/tapiji/tools/core/ui/ResourceBundleManager.java b/org.eclipse.babel.tapiji.tools.core.ui/src/org/eclipse/babel/tapiji/tools/core/ui/ResourceBundleManager.java
index 6507902..bfa8f6d 100644
--- a/org.eclipse.babel.tapiji.tools.core.ui/src/org/eclipse/babel/tapiji/tools/core/ui/ResourceBundleManager.java
+++ b/org.eclipse.babel.tapiji.tools.core.ui/src/org/eclipse/babel/tapiji/tools/core/ui/ResourceBundleManager.java
@@ -214,16 +214,16 @@
 			res = resources.get(bundleName);
 		}
 
+		
 		res.add(resource);
-
-		if (bundleName.equals("org.example.com")) {
-			Logger.logInfo("adding bundle with id: " + bundleName);
-		}
-
 		resources.put(bundleName, res);
 		allBundles.put(bundleName, new HashSet<IResource>(res));
 		bundleNames.put(bundleName, getResourceBundleName(resource));
 
+		// notify RBManager instance
+		RBManager.getInstance(resource.getProject())
+				.addBundleResource(resource);
+		
 		// Fire resource changed event
 		ResourceBundleChangedEvent event = new ResourceBundleChangedEvent(
 				ResourceBundleChangedEvent.ADDED, bundleName,
@@ -568,13 +568,13 @@
 				// TODO check if fullbuild needs only be triggered if a complete
 				// bundle was excluded
 				// fullBuildRequired &= !resources.containsKey(bundleName);
-
+				
+				//RBManager.getInstance(rbResource.getProject())
+				//		.addBundleResource(rbResource);
+				
 				this.addBundleResource(rbResource);
-
 				Logger.logInfo("Including resource bundle '"
 						+ rbResource.getFullPath().toOSString() + "'");
-				RBManager.getInstance(rbResource.getProject())
-						.addBundleResource(rbResource);
 
 				fireResourceBundleChangedEvent(getResourceBundleId(rbResource),
 						new ResourceBundleChangedEvent(
diff --git a/org.eclipse.babel.tapiji.tools.core.ui/src/org/eclipse/babel/tapiji/tools/core/ui/analyzer/RBAuditor.java b/org.eclipse.babel.tapiji.tools.core.ui/src/org/eclipse/babel/tapiji/tools/core/ui/analyzer/RBAuditor.java
index 20c3942..bf976fd 100644
--- a/org.eclipse.babel.tapiji.tools.core.ui/src/org/eclipse/babel/tapiji/tools/core/ui/analyzer/RBAuditor.java
+++ b/org.eclipse.babel.tapiji.tools.core.ui/src/org/eclipse/babel/tapiji/tools/core/ui/analyzer/RBAuditor.java
@@ -21,6 +21,7 @@
 import org.eclipse.core.resources.IResource;
 import org.eclipse.ui.IMarkerResolution;
 
+@Deprecated
 public class RBAuditor extends I18nResourceAuditor {
 
     @Override
diff --git a/org.eclipse.babel.tapiji.tools.core.ui/src/org/eclipse/babel/tapiji/tools/core/ui/analyzer/ResourceFinder.java b/org.eclipse.babel.tapiji.tools.core.ui/src/org/eclipse/babel/tapiji/tools/core/ui/analyzer/ResourceFinder.java
index 4677027..f0b8be8 100644
--- a/org.eclipse.babel.tapiji.tools.core.ui/src/org/eclipse/babel/tapiji/tools/core/ui/analyzer/ResourceFinder.java
+++ b/org.eclipse.babel.tapiji.tools.core.ui/src/org/eclipse/babel/tapiji/tools/core/ui/analyzer/ResourceFinder.java
@@ -33,9 +33,7 @@
     }
 
     @Override
-    public boolean visit(IResource resource) throws CoreException {
-    	Logger.logInfo(String.format("resource finder is visiting resource %s", resource));
-    	
+    public boolean visit(IResource resource) throws CoreException {    	
         if (I18nBuilder.isResourceAuditable(resource, supportedExtensions)) {
             Logger.logInfo("Audit necessary for resource '"
                     + resource.getFullPath().toOSString() + "'");
diff --git a/org.eclipse.babel.tapiji.tools.core.ui/src/org/eclipse/babel/tapiji/tools/core/ui/builder/ExtensionManager.java b/org.eclipse.babel.tapiji.tools.core.ui/src/org/eclipse/babel/tapiji/tools/core/ui/builder/ExtensionManager.java
index 6eed916..689a43c 100644
--- a/org.eclipse.babel.tapiji.tools.core.ui/src/org/eclipse/babel/tapiji/tools/core/ui/builder/ExtensionManager.java
+++ b/org.eclipse.babel.tapiji.tools.core.ui/src/org/eclipse/babel/tapiji/tools/core/ui/builder/ExtensionManager.java
@@ -55,9 +55,6 @@
 	private void initExtensionManager() {
 		extensions = new ArrayList<I18nAuditor>();
 
-		// init default auditors
-		extensions.add(new RBAuditor());
-
 		// lookup registered auditor extensions
 		IConfigurationElement[] config = Platform
 				.getExtensionRegistry()
diff --git a/org.eclipse.babel.tapiji.tools.core.ui/src/org/eclipse/babel/tapiji/tools/core/ui/builder/I18nBuilder.java b/org.eclipse.babel.tapiji.tools.core.ui/src/org/eclipse/babel/tapiji/tools/core/ui/builder/I18nBuilder.java
index 9124c82..66b1cf5 100644
--- a/org.eclipse.babel.tapiji.tools.core.ui/src/org/eclipse/babel/tapiji/tools/core/ui/builder/I18nBuilder.java
+++ b/org.eclipse.babel.tapiji.tools.core.ui/src/org/eclipse/babel/tapiji/tools/core/ui/builder/I18nBuilder.java
@@ -120,9 +120,6 @@
 					extensionManager.getSupportedFileEndings());
 			resDelta.accept(csrav);
 
-			Logger.logInfo(String.format(
-					"Audit triggered for derived resources: %s",
-					csrav.getResources()));
 			auditResources(csrav.getResources(), monitor, getProject());
 		} catch (CoreException e) {
 			Logger.logError(e);
