diff --git a/etc/spack/packages.yaml b/etc/spack/packages.yaml
index 41d8c5f9f61c2eed70d3587b3e3e9b8c7001f51e..e89562e8d2ca01e9b98be42001ecf8cf6f1436e3 100644
--- a/etc/spack/packages.yaml
+++ b/etc/spack/packages.yaml
@@ -1,5 +1,8 @@
 packages:
   intelmpi:
     paths:
-      intelmpi@4.1.0%gcc@4.4.7 arch=linux-x86_64: /software/compilers/intel/13.0/impi/4.1.0.024
+      intelmpi@4.1.0%gcc@4.4.7 arch=linux-x86_64: /software/compilers/intel/13.0/impi/4.1.0.024/intel64
     buildable: False
+  all:
+    providers:
+      mpi: [intelmpi, openmpi]
diff --git a/var/spack/repos/builtin/packages/intelmpi/package.py b/var/spack/repos/builtin/packages/intelmpi/package.py
index 7fec2a5832fc7f9dfb3e59fa1d8ffa55eef344df..6750ee695adc60f53188edc58280e9af9606619d 100644
--- a/var/spack/repos/builtin/packages/intelmpi/package.py
+++ b/var/spack/repos/builtin/packages/intelmpi/package.py
@@ -1,3 +1,27 @@
+##############################################################################
+# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC.
+# Produced at the Lawrence Livermore National Laboratory.
+#
+# This file is part of Spack.
+# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved.
+# LLNL-CODE-647188
+#
+# For details, see https://github.com/llnl/spack
+# Please also see the LICENSE file for our notice and the LGPL.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License (as
+# published by the Free Software Foundation) version 2.1, February 1999.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and
+# conditions of the GNU Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+##############################################################################
 from spack import *
 
 class Intelmpi(Package):
@@ -17,6 +41,13 @@ def setup_dependent_environment(self, spack_env, run_env, dependent_spec):
         spack_env.set('MPIF77', join_path(self.prefix.bin, 'mpif77'))
         spack_env.set('MPIF90', join_path(self.prefix.bin, 'mpif90'))
 
+    def setup_dependent_package(self, module, dep_spec):
+        self.spec.mpicc = join_path(self.prefix.bin, 'mpicc')
+        self.spec.mpicxx = join_path(self.prefix.bin, 'mpic++')
+        self.spec.mpifc = join_path(self.prefix.bin, 'mpif90')
+        self.spec.mpif77 = join_path(self.prefix.bin, 'mpif77')
+        self.spec.cppflags = '-DMPICH_IGNORE_CXX_SEEK'
+
 #    def install(self, spec, prefix):
 #        configure("--prefix=%s" % prefix)
 #        make()
diff --git a/var/spack/repos/builtin/packages/plumed/package.py b/var/spack/repos/builtin/packages/plumed/package.py
index 58b3ba17c475d8e20139a59cb4d235cbaa972a8e..023de82b9b369209a7e27df173bcd23fa4edc269 100644
--- a/var/spack/repos/builtin/packages/plumed/package.py
+++ b/var/spack/repos/builtin/packages/plumed/package.py
@@ -22,21 +22,6 @@
 # License along with this program; if not, write to the Free Software
 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
 ##############################################################################
-#
-# This is a template package file for Spack.  We've put "FIXME"
-# next to all the things you'll want to change. Once you've handled
-# them, you can save this file and test your package like this:
-#
-#     spack install plumed
-#
-# You can edit this file again by typing:
-#
-#     spack edit plumed
-#
-# See the Spack documentation for more information on packaging.
-# If you submit this package back to Spack as a pull request,
-# please first remove this boilerplate and all FIXME comments.
-#
 from spack import *
 
 
@@ -51,11 +36,47 @@ class Plumed(Package):
 
     version('2.2.3', git="https://github.com/plumed/plumed2.git", tag='v2.2.3')
 
-    # FIXME: Add additional dependencies if required.
-    depends_on('mpi')
+    # Variants
+    variant('crystallization', default=False,
+            description='Build support for optional crystallization module.')
+    variant('imd', default=False,
+            description='Build support for optional imd module.')
+    variant('manyrestraints', default=False,
+            description='Build support for optional manyrestraints module.')
+    variant('mpi', default=False,
+            description='Enable MPI support.')
+
+    # Dependencies
+    depends_on("mpi", when="+mpi")
+    depends_on("netlib-lapack")
+    depends_on("openblas")
 
     def install(self, spec, prefix):
-        configure("--prefix=" + prefix,
-                  "--enable-mpi",
-                  "-enable-modules=crystallization")
+        configure("--prefix=" + prefix)
+#                  "--enable-mpi",
+#                  "-enable-modules=crystallization")
+
+        # Construct list of optional modules
+        module_opts=[]
+        module_opts.extend([
+            '+crystallization' if '+crystallization' in spec else '-crystallization',
+            '+imd' if '+imd' in spec else '-imd',
+            '+manyrestraints' if '+manyrestraints' in spec else '-manyrestraints'
+        ])
+
+        # Add optional arguments based on specs and variants
+#        config_args.extend([
+            # Modules
+#            "--enable-modules=%s" % "".join(module_opts) if module_opts is not None,
+#            "--enable-mpi" if '+mpi' in spec
+#        ])
+
+        if modules_opts:
+            config_args.extend(["--enable-modules=%s" % "".join(module_opts)])
+
+        config_args.extend([
+            "--enable-mpi" if '+mpi' in spec else "--disable-mpi"
+        ])
+
         make()
+        make("install")