diff --git a/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/editors/project/DependencyManagementSection.java b/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/editors/project/DependencyManagementSection.java
index e95bf45..b3e79af 100644
--- a/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/editors/project/DependencyManagementSection.java
+++ b/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/editors/project/DependencyManagementSection.java
@@ -27,9 +27,8 @@
 import java.util.Set;
 
 import org.apache.felix.sigil.common.osgi.VersionRange;
-import org.apache.felix.sigil.common.osgi.VersionRangeBoundingRule;
-import org.apache.felix.sigil.eclipse.SigilCore;
 import org.apache.felix.sigil.eclipse.model.project.ISigilProjectModel;
+import org.apache.felix.sigil.eclipse.model.util.ModelHelper;
 import org.apache.felix.sigil.model.ModelElementFactory;
 import org.apache.felix.sigil.model.osgi.IBundleModelElement;
 import org.apache.felix.sigil.model.osgi.IPackageExport;
@@ -51,7 +50,6 @@
 import org.eclipse.jdt.core.IPackageFragment;
 import org.eclipse.jdt.core.JavaModelException;
 import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.preference.IPreferenceStore;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.layout.GridData;
 import org.eclipse.swt.widgets.Composite;
@@ -167,13 +165,6 @@
             return;
         }
 
-        // Get the version rules
-        IPreferenceStore prefStore = SigilCore.getDefault().getPreferenceStore();
-        VersionRangeBoundingRule lowerBoundRule = VersionRangeBoundingRule.valueOf( prefStore
-            .getString( SigilCore.DEFAULT_VERSION_LOWER_BOUND ) );
-        VersionRangeBoundingRule upperBoundRule = VersionRangeBoundingRule.valueOf( prefStore
-            .getString( SigilCore.DEFAULT_VERSION_UPPER_BOUND ) );
-
         // Get the existing imports for the bundle
         IBundleModelElement bundleInfo = getProjectModel().getBundle().getBundleInfo();
         Collection<IPackageImport> existingImports = bundleInfo.getImports();
@@ -191,8 +182,7 @@
             IPackageExport export = exports.get( pkgImport );
             if ( export != null && !existingImportsMap.containsKey( pkgImport ) )
             {
-                VersionRange versionRange = VersionRange.newInstance( export.getVersion(), lowerBoundRule,
-                    upperBoundRule );
+                VersionRange versionRange = ModelHelper.getDefaultRange(export.getVersion());
                 IPackageImport newImport = elementFactory.newModelElement( IPackageImport.class );
                 newImport.setPackageName( pkgImport );
                 newImport.setVersions( versionRange );
diff --git a/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/editors/project/ExportPackagesSection.java b/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/editors/project/ExportPackagesSection.java
index e0f2f9c..c173cf5 100644
--- a/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/editors/project/ExportPackagesSection.java
+++ b/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/editors/project/ExportPackagesSection.java
@@ -24,9 +24,9 @@
 import java.util.List;
 
 import org.apache.felix.sigil.common.osgi.VersionRange;
-import org.apache.felix.sigil.common.osgi.VersionRangeBoundingRule;
 import org.apache.felix.sigil.eclipse.SigilCore;
 import org.apache.felix.sigil.eclipse.model.project.ISigilProjectModel;
+import org.apache.felix.sigil.eclipse.model.util.ModelHelper;
 import org.apache.felix.sigil.model.ModelElementFactory;
 import org.apache.felix.sigil.model.ModelElementFactoryException;
 import org.apache.felix.sigil.model.eclipse.ISigilBundle;
@@ -122,16 +122,12 @@
                         IPackageImport pkgImport = ModelElementFactory.getInstance().newModelElement(
                             IPackageImport.class );
                         pkgImport.setPackageName( pkgFragment.getElementName() );
-                        VersionRangeBoundingRule lowerBound = VersionRangeBoundingRule.valueOf( store
-                            .getString( SigilCore.DEFAULT_VERSION_LOWER_BOUND ) );
-                        VersionRangeBoundingRule upperBound = VersionRangeBoundingRule.valueOf( store
-                            .getString( SigilCore.DEFAULT_VERSION_UPPER_BOUND ) );
                         Version version = dialog.getVersion();
                         if ( version == null )
                         {
                             version = getBundle().getVersion();
                         }
-                        VersionRange versionRange = VersionRange.newInstance( version, lowerBound, upperBound );
+                        VersionRange versionRange = ModelHelper.getDefaultRange(version);
                         pkgImport.setVersions( versionRange );
 
                         getBundle().getBundleInfo().addImport( pkgImport );
diff --git a/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/editors/project/NewResourceSelectionDialog.java b/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/editors/project/NewResourceSelectionDialog.java
index b5ec9a8..ed8e99c 100644
--- a/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/editors/project/NewResourceSelectionDialog.java
+++ b/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/editors/project/NewResourceSelectionDialog.java
@@ -21,12 +21,10 @@
 
 
 import org.apache.felix.sigil.common.osgi.VersionRange;
-import org.apache.felix.sigil.common.osgi.VersionRangeBoundingRule;
-import org.apache.felix.sigil.eclipse.SigilCore;
+import org.apache.felix.sigil.eclipse.model.util.ModelHelper;
 import org.apache.felix.sigil.model.osgi.IVersionedModelElement;
 import org.apache.felix.sigil.ui.eclipse.ui.util.BackgroundLoadingSelectionDialog;
 import org.apache.felix.sigil.ui.eclipse.ui.util.IValidationListener;
-import org.eclipse.jface.preference.IPreferenceStore;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.events.SelectionAdapter;
 import org.eclipse.swt.events.SelectionEvent;
@@ -146,14 +144,8 @@
     {
         if ( selection != null )
         {
-            IPreferenceStore store = SigilCore.getDefault().getPreferenceStore();
-            VersionRangeBoundingRule lowerBoundRule = VersionRangeBoundingRule.valueOf( store
-                .getString( SigilCore.DEFAULT_VERSION_LOWER_BOUND ) );
-            VersionRangeBoundingRule upperBoundRule = VersionRangeBoundingRule.valueOf( store
-                .getString( SigilCore.DEFAULT_VERSION_UPPER_BOUND ) );
-
             Version version = selection.getVersion();
-            selectedVersions = VersionRange.newInstance( version, lowerBoundRule, upperBoundRule );
+            selectedVersions = ModelHelper.getDefaultRange(version);
             pnlVersionRange.setVersions( selectedVersions );
         }
     }
diff --git a/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/quickfix/ImportPackageProposal.java b/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/quickfix/ImportPackageProposal.java
index 0192f14..6b718fb 100644
--- a/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/quickfix/ImportPackageProposal.java
+++ b/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/quickfix/ImportPackageProposal.java
@@ -24,6 +24,7 @@
 import org.apache.felix.sigil.common.osgi.VersionRangeBoundingRule;
 import org.apache.felix.sigil.eclipse.SigilCore;
 import org.apache.felix.sigil.eclipse.model.project.ISigilProjectModel;
+import org.apache.felix.sigil.eclipse.model.util.ModelHelper;
 import org.apache.felix.sigil.model.ModelElementFactory;
 import org.apache.felix.sigil.model.ModelElementFactoryException;
 import org.apache.felix.sigil.model.osgi.IPackageExport;
@@ -68,14 +69,7 @@
 
             final IPackageImport i = ModelElementFactory.getInstance().newModelElement( IPackageImport.class );
             i.setPackageName( e.getPackageName() );
-            IPreferenceStore store = SigilCore.getDefault().getPreferenceStore();
-            VersionRangeBoundingRule lowerBoundRule = VersionRangeBoundingRule.valueOf( store
-                .getString( SigilCore.DEFAULT_VERSION_LOWER_BOUND ) );
-            VersionRangeBoundingRule upperBoundRule = VersionRangeBoundingRule.valueOf( store
-                .getString( SigilCore.DEFAULT_VERSION_UPPER_BOUND ) );
-
-            Version version = e.getVersion();
-            VersionRange selectedVersions = VersionRange.newInstance( version, lowerBoundRule, upperBoundRule );
+            VersionRange selectedVersions = ModelHelper.getDefaultRange(e.getVersion());
             i.setVersions( selectedVersions );
 
             WorkspaceModifyOperation op = new WorkspaceModifyOperation()
diff --git a/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/quickfix/ImportSearchResultProposal.java b/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/quickfix/ImportSearchResultProposal.java
index d4f8747..31a61af 100644
--- a/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/quickfix/ImportSearchResultProposal.java
+++ b/sigil/eclipse/ui/src/org/apache/felix/sigil/ui/eclipse/ui/quickfix/ImportSearchResultProposal.java
@@ -24,6 +24,7 @@
 import org.apache.felix.sigil.common.osgi.VersionRangeBoundingRule;
 import org.apache.felix.sigil.eclipse.SigilCore;
 import org.apache.felix.sigil.eclipse.model.project.ISigilProjectModel;
+import org.apache.felix.sigil.eclipse.model.util.ModelHelper;
 import org.apache.felix.sigil.model.ModelElementFactory;
 import org.apache.felix.sigil.model.osgi.IPackageExport;
 import org.apache.felix.sigil.model.osgi.IPackageImport;
@@ -112,14 +113,7 @@
 
         final IPackageImport i = ModelElementFactory.getInstance().newModelElement( IPackageImport.class );
         i.setPackageName( e.getPackageName() );
-        IPreferenceStore store = SigilCore.getDefault().getPreferenceStore();
-        VersionRangeBoundingRule lowerBoundRule = VersionRangeBoundingRule.valueOf( store
-            .getString( SigilCore.DEFAULT_VERSION_LOWER_BOUND ) );
-        VersionRangeBoundingRule upperBoundRule = VersionRangeBoundingRule.valueOf( store
-            .getString( SigilCore.DEFAULT_VERSION_UPPER_BOUND ) );
-
-        Version version = e.getVersion();
-        VersionRange selectedVersions = VersionRange.newInstance( version, lowerBoundRule, upperBoundRule );
+        VersionRange selectedVersions = ModelHelper.getDefaultRange(e.getVersion());
         i.setVersions( selectedVersions );
 
         WorkspaceModifyOperation op = new WorkspaceModifyOperation()
