diff --git a/arch/crd/MC-1.yaml b/arch/crd/MC-1.yaml
index e88401064..b6a576993 100644
--- a/arch/crd/MC-1.yaml
+++ b/arch/crd/MC-1.yaml
@@ -47,7 +47,7 @@ MC-1:
     parameters:
         TIME_CSR_IMPLEMENTED: {} # Unconstrained
   - name: Sm
-    version: "~> 1.11"
+    version: "~> 1.11.0"
     presence: mandatory
     parameters:
         MTVEC_BASE_ALIGNMENT_DIRECT: {} # Unconstrained
@@ -60,10 +60,6 @@ MC-1:
         MTVAL_WIDTH: {} # Unconstrained
         MTVEC_MODES: {} # Unconstrained
         PHYS_ADDR_WIDTH: {} # Unconstrained
-        CONFIG_PTR_ADDRESS:
-          schema:
-            const: 0xdeadbeef
-          note: "This parameter and its associated CSR shouldn't be here. See GitHub issue #53."
         PRECISE_SYNCHRONOUS_EXCEPTIONS:
           schema:
             const: true
diff --git a/lib/arch_obj_models/crd.rb b/lib/arch_obj_models/crd.rb
index 40af40239..0be657a2a 100644
--- a/lib/arch_obj_models/crd.rb
+++ b/lib/arch_obj_models/crd.rb
@@ -273,6 +273,11 @@ def all_in_scope_ext_params
         param_db = ext_db.params.find { |p| p.name == param_name }
         raise "There is no param '#{param_name}' in extension '#{ext_crd["name"]}" if param_db.nil?
 
+        next unless ext_db.versions.any? do |ver|
+          Gem::Requirement.new(ext_crd["version"]).satisfied_by?(Gem::Version.new(ver["version"])) &&
+            param_db.defined_in_extension_version?(ver["version"])
+        end
+
         @all_in_scope_ext_params << 
           InScopeExtensionParameter.new(param_db, param_data["schema"], param_data["note"])
       end
@@ -302,6 +307,11 @@ def in_scope_ext_params(ext_req)
         ext_param_db = ext_db.params.find { |p| p.name == param_name }
         raise "There is no param '#{param_name}' in extension '#{ext_crd["name"]}" if ext_param_db.nil?
 
+        next unless ext_db.versions.any? do |ver|
+          Gem::Requirement.new(ext_crd["version"]).satisfied_by?(Gem::Version.new(ver["version"])) &&
+            ext_param_db.defined_in_extension_version?(ver["version"])
+        end
+
         ext_params << 
           InScopeExtensionParameter.new(ext_param_db, param_data["schema"], param_data["note"])
     end
@@ -315,8 +325,15 @@ def all_out_of_scope_params
  
     @all_out_of_scope_params = []
     in_scope_ext_reqs.each do |ext_req|
-      @arch_def.extension(ext_req.name).params.each do |param_db|
+      ext_db = @arch_def.extension(ext_req.name)
+      ext_db.params.each do |param_db|
         next if all_in_scope_ext_params.any? { |c| c.param_db.name == param_db.name }
+
+        next unless ext_db.versions.any? do |ver|
+          Gem::Requirement.new(ext_req.version_requirement).satisfied_by?(Gem::Version.new(ver["version"])) &&
+            param_db.defined_in_extension_version?(ver["version"])
+        end
+
         @all_out_of_scope_params << param_db
       end
     end
diff --git a/lib/arch_obj_models/extension.rb b/lib/arch_obj_models/extension.rb
index fc0e053b9..6ad74403d 100644
--- a/lib/arch_obj_models/extension.rb
+++ b/lib/arch_obj_models/extension.rb
@@ -67,7 +67,7 @@ def initialize(ext, name, data)
   def defined_in_extension_version?(version)
     return true if @data.dig("when", "version").nil?
 
-    Gem::Requirement.new(@data["when"]["version"]).satisfied_by?(version)
+    Gem::Requirement.new(@data["when"]["version"]).satisfied_by?(Gem::Version.new(version))
   end
 
   # @return [String]