diff --git a/README.md b/README.md
index c883cf44b439b2dc7fb7f002d5dd9ceb1b91aa5d..11d505a77994f3ded867d178ab8319cbf2681fe0 100644
--- a/README.md
+++ b/README.md
@@ -35,4 +35,20 @@ for Spack is also available.
 Authors
 ----------------
 Spack was written by Todd Gamblin, tgamblin@llnl.gov.
-LLNL-CODE-647188
+
+Significant contributions were also made by the following awesome
+people:
+
+  * David Beckingsale
+  * David Boehme
+  * Luc Jaulmes
+  * Matt Legendre
+  * Greg Lee
+  * Adam Moody
+
+Release
+----------------
+Spack is released under an LGPL license.  For more details see the
+LICENSE file.
+
+``LLNL-CODE-647188``
diff --git a/lib/spack/llnl/util/filesystem.py b/lib/spack/llnl/util/filesystem.py
index 11c3dee60499d1bb1c324e4d60117ab4c5bf6ee4..3782aefccedfeb7b1b4df7498dffef622506ce74 100644
--- a/lib/spack/llnl/util/filesystem.py
+++ b/lib/spack/llnl/util/filesystem.py
@@ -124,8 +124,19 @@ def expand_user(path):
     return path.replace('%u', username)
 
 
+def mkdirp(*paths):
+    for path in paths:
+        if not os.path.exists(path):
+            os.makedirs(path)
+        elif not os.path.isdir(path):
+            raise OSError(errno.EEXIST, "File alredy exists", path)
+
+
 @contextmanager
-def working_dir(dirname):
+def working_dir(dirname, **kwargs):
+    if kwargs.get('create', False):
+        mkdirp(dirname)
+
     orig_dir = os.getcwd()
     os.chdir(dirname)
     yield
@@ -137,14 +148,6 @@ def touch(path):
         os.utime(path, None)
 
 
-def mkdirp(*paths):
-    for path in paths:
-        if not os.path.exists(path):
-            os.makedirs(path)
-        elif not os.path.isdir(path):
-            raise OSError(errno.EEXIST, "File alredy exists", path)
-
-
 def join_path(prefix, *args):
     path = str(prefix)
     for elt in args:
diff --git a/lib/spack/spack/build_environment.py b/lib/spack/spack/build_environment.py
index 94d5b7a3bee2a328e01f59090945fefb775bf355..b71c543e5dc85cac1e9f6c0565625e0c5ea85a8e 100644
--- a/lib/spack/spack/build_environment.py
+++ b/lib/spack/spack/build_environment.py
@@ -84,7 +84,7 @@ def __call__(self, *args, **kwargs):
 
 def set_compiler_environment_variables(pkg):
     assert(pkg.spec.concrete)
-    compiler = compilers.compiler_for_spec(pkg.spec.compiler)
+    compiler = pkg.compiler
 
     # Set compiler variables used by CMake and autotools
     os.environ['CC']  = 'cc'
@@ -165,6 +165,9 @@ def set_module_variables_for_package(pkg):
     m.make  = MakeExecutable('make', pkg.parallel)
     m.gmake = MakeExecutable('gmake', pkg.parallel)
 
+    # easy shortcut to os.environ
+    m.env = os.environ
+
     # number of jobs spack prefers to build with.
     m.make_jobs = multiprocessing.cpu_count()
 
@@ -180,7 +183,7 @@ def set_module_variables_for_package(pkg):
 
     # standard CMake arguments
     m.std_cmake_args = ['-DCMAKE_INSTALL_PREFIX=%s' % pkg.prefix,
-                        '-DCMAKE_BUILD_TYPE=None']
+                        '-DCMAKE_BUILD_TYPE=RelWithDebInfo']
     if platform.mac_ver()[0]:
         m.std_cmake_args.append('-DCMAKE_FIND_FRAMEWORK=LAST')
 
diff --git a/lib/spack/spack/cmd/create.py b/lib/spack/spack/cmd/create.py
index 1a1a19a4b62dd4d671f809e552104bfc1b89a32f..c98162aca749bc9bad77ea2f906550b8b108fe28 100644
--- a/lib/spack/spack/cmd/create.py
+++ b/lib/spack/spack/cmd/create.py
@@ -87,6 +87,9 @@ def setup_parser(subparser):
     subparser.add_argument(
         '--keep-stage', action='store_true', dest='keep_stage',
         help="Don't clean up staging area when command completes.")
+    subparser.add_argument(
+        '-n', '--name', dest='alternate_name', default=None,
+        help="Override the autodetected name for the created package.")
     subparser.add_argument(
         '-f', '--force', action='store_true', dest='force',
         help="Overwrite any existing package file with the same name.")
@@ -121,30 +124,27 @@ def make_version_calls(ver_hash_tuples):
     return '\n'.join(format % ("'%s'" % v, h) for v, h in ver_hash_tuples)
 
 
-def get_name():
-    """Prompt user to input a package name."""
-    name = ""
-    while not name:
-        new_name = raw_input("Name: ")
-        if spack.db.valid_name(name):
-            name = new_name
-        else:
-            print "Package name can only contain A-Z, a-z, 0-9, '_' and '-'"
-    return name
-
-
 def create(parser, args):
     url = args.url
 
     # Try to deduce name and version of the new package from the URL
     name, version = spack.url.parse_name_and_version(url)
-    if not name:
-        tty.msg("Couldn't guess a name for this package.")
-        name = get_name()
+
+    # Use a user-supplied name if one is present
+    name = kwargs.get(args, 'alternate_name', False)
+    if args.name:
+        name = args.name
 
     if not version:
         tty.die("Couldn't guess a version string from %s." % url)
 
+    if not name:
+        tty.die("Couldn't guess a name for this package. Try running:", "",
+                "spack create --name <name> <url>")
+
+    if not spack.db.valid_name(name):
+        tty.die("Package name can only contain A-Z, a-z, 0-9, '_' and '-'")
+
     tty.msg("This looks like a URL for %s version %s." % (name, version))
     tty.msg("Creating template for package %s" % name)
 
diff --git a/lib/spack/spack/compiler.py b/lib/spack/spack/compiler.py
index 582f49eaf2861eda3271b26fc78d02765c64aa58..90fbf082413c62dd88cf803b2eff7465c93cec25 100644
--- a/lib/spack/spack/compiler.py
+++ b/lib/spack/spack/compiler.py
@@ -94,6 +94,9 @@ class Compiler(object):
     # Names of generic arguments used by this compiler
     arg_rpath   = '-Wl,-rpath,%s'
 
+    # argument used to get C++11 options
+    cxx11_flag = "-std=c++11"
+
 
     def __init__(self, cspec, cc, cxx, f77, fc):
         def check(exe):
diff --git a/lib/spack/spack/compilers/gcc.py b/lib/spack/spack/compilers/gcc.py
index cc3c52ca61468fd945358e4c6293fe1351a2adcc..097b24bb8746ff0d8f8115ed627f94271563abaf 100644
--- a/lib/spack/spack/compilers/gcc.py
+++ b/lib/spack/spack/compilers/gcc.py
@@ -22,7 +22,9 @@
 # along with this program; if not, write to the Free Software Foundation,
 # Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
 ##############################################################################
+import llnl.util.tty as tty
 from spack.compiler import *
+from spack.version import ver
 
 class Gcc(Compiler):
     # Subclasses use possible names of C compiler
@@ -40,6 +42,15 @@ class Gcc(Compiler):
     # MacPorts builds gcc versions with prefixes and -mp-X.Y suffixes.
     suffixes = [r'-mp-\d\.\d']
 
+    @property
+    def cxx11_flag(self):
+        if self.version < ver('4.3'):
+            tty.die("Only gcc 4.3 and above support c++11.")
+        elif self.version < ver('4.7'):
+            return "-std=gnu++0x"
+        else:
+            return "-std=gnu++11"
+
     @classmethod
     def fc_version(cls, fc):
         return get_compiler_version(
diff --git a/lib/spack/spack/compilers/intel.py b/lib/spack/spack/compilers/intel.py
index 02e3b96b1986595ed4a044dba32657cab668e824..2a72c4eaea09fb05213a86dd5c83042f78b453b0 100644
--- a/lib/spack/spack/compilers/intel.py
+++ b/lib/spack/spack/compilers/intel.py
@@ -37,6 +37,15 @@ class Intel(Compiler):
     # Subclasses use possible names of Fortran 90 compiler
     fc_names = ['ifort']
 
+    @property
+    def cxx11_flag(self):
+        if self.version < ver('11.1'):
+            tty.die("Only intel 11.1 and above support c++11.")
+        elif self.version < ver('13'):
+            return "-std=c++0x"
+        else:
+            return "-std=c++11"
+
 
     @classmethod
     def default_version(cls, comp):
diff --git a/lib/spack/spack/package.py b/lib/spack/spack/package.py
index 361fda1ba6e44b9ed446839e565b8356410f1edd..9644aa43d3118a8a375bf51865f80bdd87de66f6 100644
--- a/lib/spack/spack/package.py
+++ b/lib/spack/spack/package.py
@@ -48,6 +48,7 @@
 import spack
 import spack.spec
 import spack.error
+import spack.compilers
 import spack.hooks
 import spack.build_environment as build_env
 import spack.url as url
@@ -57,7 +58,7 @@
 from spack.util.compression import allowed_archive, extension
 
 """Allowed URL schemes for spack packages."""
-_ALLOWED_URL_SCHEMES = ["http", "https", "ftp", "file"]
+_ALLOWED_URL_SCHEMES = ["http", "https", "ftp", "file", "git"]
 
 
 class Package(object):
@@ -505,6 +506,14 @@ def prefix(self):
         return self.spec.prefix
 
 
+    @property
+    def compiler(self):
+        """Get the spack.compiler.Compiler object used to build this package."""
+        if not self.spec.concrete:
+            raise ValueError("Can only get a compiler for a concrete package.")
+        return spack.compilers.compiler_for_spec(self.spec.compiler)
+
+
     def url_version(self, version):
         """Given a version, this returns a string that should be substituted into the
            package's URL to download that version.
diff --git a/var/spack/packages/clang/package.py b/var/spack/packages/clang/package.py
new file mode 100644
index 0000000000000000000000000000000000000000..b0097bd1261c71ad01f83d00e6b784be83691c96
--- /dev/null
+++ b/var/spack/packages/clang/package.py
@@ -0,0 +1,47 @@
+##############################################################################
+# Copyright (c) 2013, Lawrence Livermore National Security, LLC.
+# Produced at the Lawrence Livermore National Laboratory.
+#
+# This file is part of Spack.
+# Written by Todd Gamblin, tgamblin@llnl.gov, All rights reserved.
+# LLNL-CODE-647188
+#
+# For details, see https://scalability-llnl.github.io/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 General Public License (as published by
+# the Free Software Foundation) version 2.1 dated 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 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 Clang(Package):
+    """The goal of the Clang project is to create a new C, C++,
+       Objective C and Objective C++ front-end for the LLVM compiler.
+    """
+    homepage = "http://clang.llvm.org"
+    url      = "http://llvm.org/releases/3.4.2/cfe-3.4.2.src.tar.gz"
+
+    depends_on("llvm")
+
+    version('3.4.2', '87945973b7c73038871c5f849a818588')
+
+    def install(self, spec, prefix):
+        env['CXXFLAGS'] = self.compiler.cxx11_flag
+
+        with working_dir('spack-build', create=True):
+            cmake('..',
+                  '-DCLANG_PATH_TO_LLVM_BUILD=%s' % spec['llvm'].prefix,
+                  '-DLLVM_MAIN_SRC_DIR=%s' % spec['llvm'].prefix,
+                  *std_cmake_args)
+            make()
+            make("install")
diff --git a/var/spack/packages/llvm-lld/package.py b/var/spack/packages/llvm-lld/package.py
new file mode 100644
index 0000000000000000000000000000000000000000..f2292113962e94c8995a176866cf7ef4750ff9e1
--- /dev/null
+++ b/var/spack/packages/llvm-lld/package.py
@@ -0,0 +1,46 @@
+##############################################################################
+# Copyright (c) 2013, Lawrence Livermore National Security, LLC.
+# Produced at the Lawrence Livermore National Laboratory.
+#
+# This file is part of Spack.
+# Written by Todd Gamblin, tgamblin@llnl.gov, All rights reserved.
+# LLNL-CODE-647188
+#
+# For details, see https://scalability-llnl.github.io/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 General Public License (as published by
+# the Free Software Foundation) version 2.1 dated 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 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 LlvmLld(Package):
+    """lld - The LLVM Linker
+       lld is a new set of modular code for creating linker tools."""
+    homepage = "http://lld.llvm.org"
+    url      = "http://llvm.org/releases/3.4/lld-3.4.src.tar.gz"
+
+    depends_on('llvm')
+
+    version('3.4', '3b6a17e58c8416c869c14dd37682f78e')
+
+    def install(self, spec, prefix):
+        env['CXXFLAGS'] = self.compier.cxx11_flag
+
+        with working_dir('spack-build', create=True):
+            cmake('..',
+                  '-DLLD_PATH_TO_LLVM_BUILD=%s' % spec['llvm'].prefix,
+                  '-DLLVM_MAIN_SRC_DIR=%s' % spec['llvm'].prefix,
+                  *std_cmake_args)
+            make()
+            make("install")
diff --git a/var/spack/packages/llvm/package.py b/var/spack/packages/llvm/package.py
new file mode 100644
index 0000000000000000000000000000000000000000..c7a10df55ae1992e4c4cb5909c00a45642d26f98
--- /dev/null
+++ b/var/spack/packages/llvm/package.py
@@ -0,0 +1,50 @@
+##############################################################################
+# Copyright (c) 2013, Lawrence Livermore National Security, LLC.
+# Produced at the Lawrence Livermore National Laboratory.
+#
+# This file is part of Spack.
+# Written by David Beckingsale, david@llnl.gov, All rights reserved.
+# LLNL-CODE-647188
+#
+# For details, see https://scalability-llnl.github.io/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 General Public License (as published by
+# the Free Software Foundation) version 2.1 dated 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 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 Llvm(Package):
+    """The LLVM Project is a collection of modular and reusable compiler and
+       toolchain technologies. Despite its name, LLVM has little to do with
+       traditional virtual machines, though it does provide helpful libraries
+       that can be used to build them. The name "LLVM" itself is not an acronym;
+       it is the full name of the project.
+    """
+    homepage = "http://llvm.org/"
+    url      = "http://llvm.org/releases/3.4.2/llvm-3.4.2.src.tar.gz"
+
+    version('3.4.2', 'a20669f75967440de949ac3b1bad439c')
+
+    def install(self, spec, prefix):
+        env['CXXFLAGS'] = self.compiler.cxx11_flag
+
+        with working_dir('spack-build', create=True):
+            cmake('..',
+                  '-DLLVM_REQUIRES_RTTI=1',
+                  '-DPYTHON_EXECUTABLE=/usr/bin/python',
+                  '-DPYTHON_INCLUDE_DIR=/usr/include/python2.6',
+                  '-DPYTHON_LIBRARY=/usr/lib64/libpython2.6.so',
+                  *std_cmake_args)
+            make()
+            make("install")