diff --git a/Source/cmFindPackageCommand.cxx b/Source/cmFindPackageCommand.cxx
index f130ba2275aea4e04852e493f1af4b702f130641..7a0b462249cadf870dcaa40a0aac8c5981e7343d 100644
--- a/Source/cmFindPackageCommand.cxx
+++ b/Source/cmFindPackageCommand.cxx
@@ -411,7 +411,7 @@ bool cmFindPackageCommand
       {
       // Set a variable telling the find script this component
       // is required.
-      std::string req_var = Name + "_FIND_REQUIRED_" + args[i];
+      std::string req_var = this->Name + "_FIND_REQUIRED_" + args[i];
       this->Makefile->AddDefinition(req_var.c_str(), "1");
 
       // Append to the list of required components.
@@ -480,9 +480,7 @@ bool cmFindPackageCommand
       }
     }
 
-  // Store the list of components.
-  std::string components_var = Name + "_FIND_COMPONENTS";
-  this->Makefile->AddDefinition(components_var.c_str(), components.c_str());
+  this->SetModuleVariables(components);
 
   // See if there is a Find<package>.cmake module.
   if(!this->NoModule)
@@ -533,68 +531,78 @@ bool cmFindPackageCommand
   return result;
 }
 
+
 //----------------------------------------------------------------------------
-bool cmFindPackageCommand::FindModule(bool& found)
+bool cmFindPackageCommand::SetModuleVariables(const std::string& components)
 {
-  std::string module = "Find";
-  module += this->Name;
-  module += ".cmake";
-  std::string mfile = this->Makefile->GetModulesFile(module.c_str());
-  if ( mfile.size() )
+  // Store the list of components.
+  std::string components_var = this->Name + "_FIND_COMPONENTS";
+  this->Makefile->AddDefinition(components_var.c_str(), components.c_str());
+   
+  if(this->Quiet)
     {
-    if(this->Quiet)
-      {
-      // Tell the module that is about to be read that it should find
-      // quietly.
-      std::string quietly = this->Name;
-      quietly += "_FIND_QUIETLY";
-      this->Makefile->AddDefinition(quietly.c_str(), "1");
-      }
+    // Tell the module that is about to be read that it should find
+    // quietly.
+    std::string quietly = this->Name;
+    quietly += "_FIND_QUIETLY";
+    this->Makefile->AddDefinition(quietly.c_str(), "1");
+    }
 
-    if(this->Required)
-      {
-      // Tell the module that is about to be read that it should report
-      // a fatal error if the package is not found.
-      std::string req = this->Name;
-      req += "_FIND_REQUIRED";
-      this->Makefile->AddDefinition(req.c_str(), "1");
-      }
+  if(this->Required)
+    {
+    // Tell the module that is about to be read that it should report
+    // a fatal error if the package is not found.
+    std::string req = this->Name;
+    req += "_FIND_REQUIRED";
+    this->Makefile->AddDefinition(req.c_str(), "1");
+    }
 
-    if(!this->Version.empty())
+  if(!this->Version.empty())
+    {
+    // Tell the module that is about to be read what version of the
+    // package has been requested.
+    std::string ver = this->Name;
+    ver += "_FIND_VERSION";
+    this->Makefile->AddDefinition(ver.c_str(), this->Version.c_str());
+    char buf[64];
+    switch(this->VersionCount)
       {
-      // Tell the module that is about to be read what version of the
-      // package has been requested.
-      std::string ver = this->Name;
-      ver += "_FIND_VERSION";
-      this->Makefile->AddDefinition(ver.c_str(), this->Version.c_str());
-      char buf[64];
-      switch(this->VersionCount)
+      case 3:
         {
-        case 3:
-          {
-          sprintf(buf, "%u", this->VersionPatch);
-          this->Makefile->AddDefinition((ver+"_PATCH").c_str(), buf);
-          } // no break
-        case 2:
-          {
-          sprintf(buf, "%u", this->VersionMinor);
-          this->Makefile->AddDefinition((ver+"_MINOR").c_str(), buf);
-          } // no break
-        case 1:
-          {
-          sprintf(buf, "%u", this->VersionMajor);
-          this->Makefile->AddDefinition((ver+"_MAJOR").c_str(), buf);
-          } // no break
-        default: break;
-        }
-
-      // Tell the module whether an exact version has been requested.
-      std::string exact = this->Name;
-      exact += "_FIND_VERSION_EXACT";
-      this->Makefile->AddDefinition(exact.c_str(),
-                                    this->VersionExact? "1":"0");
+        sprintf(buf, "%u", this->VersionPatch);
+        this->Makefile->AddDefinition((ver+"_PATCH").c_str(), buf);
+        } // no break
+      case 2:
+        {
+        sprintf(buf, "%u", this->VersionMinor);
+        this->Makefile->AddDefinition((ver+"_MINOR").c_str(), buf);
+        } // no break
+      case 1:
+        {
+        sprintf(buf, "%u", this->VersionMajor);
+        this->Makefile->AddDefinition((ver+"_MAJOR").c_str(), buf);
+        } // no break
+      default: break;
       }
 
+    // Tell the module whether an exact version has been requested.
+    std::string exact = this->Name;
+    exact += "_FIND_VERSION_EXACT";
+    this->Makefile->AddDefinition(exact.c_str(),
+                                  this->VersionExact? "1":"0");
+   }
+}
+
+
+//----------------------------------------------------------------------------
+bool cmFindPackageCommand::FindModule(bool& found)
+{
+  std::string module = "Find";
+  module += this->Name;
+  module += ".cmake";
+  std::string mfile = this->Makefile->GetModulesFile(module.c_str());
+  if ( mfile.size() )
+    {
     // Load the module we found.
     found = true;
     return this->ReadListFile(mfile.c_str());
diff --git a/Source/cmFindPackageCommand.h b/Source/cmFindPackageCommand.h
index d5fe703dd04acac18a0a117539ca7c0cecf998b2..398d6a92d4888fc484934f03fac4a806de498d28 100644
--- a/Source/cmFindPackageCommand.h
+++ b/Source/cmFindPackageCommand.h
@@ -73,6 +73,7 @@ public:
 private:
   void AppendSuccessInformation();
   void AppendToProperty(const char* propertyName);
+  bool SetModuleVariables(const std::string& components);
   bool FindModule(bool& found);
   bool HandlePackageMode();
   void FindConfig();