diff --git a/projects/SmallExamples/ModuleMaker/Makefile b/projects/SmallExamples/ModuleMaker/Makefile
new file mode 100644
index 0000000..7c2d328
--- /dev/null
+++ b/projects/SmallExamples/ModuleMaker/Makefile
@@ -0,0 +1,19 @@
+#
+# This is a sample Makefile for a project that uses LLVM.
+#
+
+#
+# Indicates our relative path to the top of the project's root directory.
+#
+LEVEL = .
+
+#
+# Directories that needs to be built.
+#
+DIRS = tools
+
+#
+# Include the Master Makefile that knows how to build all.
+#
+include $(LEVEL)/Makefile.common
+
diff --git a/projects/SmallExamples/ModuleMaker/Makefile.common b/projects/SmallExamples/ModuleMaker/Makefile.common
new file mode 100644
index 0000000..9b34d87
--- /dev/null
+++ b/projects/SmallExamples/ModuleMaker/Makefile.common
@@ -0,0 +1,10 @@
+#
+# Set this variable to the top of the LLVM source tree.
+#
+LLVM_SRC_ROOT = $(LEVEL)/../..
+
+#
+# Include LLVM's Master Makefile.
+#
+include $(LLVM_SRC_ROOT)/Makefile.common
+
diff --git a/projects/SmallExamples/ModuleMaker/tools/Makefile b/projects/SmallExamples/ModuleMaker/tools/Makefile
new file mode 100644
index 0000000..47997df
--- /dev/null
+++ b/projects/SmallExamples/ModuleMaker/tools/Makefile
@@ -0,0 +1,11 @@
+#
+# Relative path to the top of the source tree.
+#
+LEVEL=..
+
+#
+# List all of the subdirectories that we will compile.
+#
+DIRS=ModuleMaker
+
+include $(LEVEL)/Makefile.common
diff --git a/projects/SmallExamples/ModuleMaker/tools/ModuleMaker/Makefile b/projects/SmallExamples/ModuleMaker/tools/ModuleMaker/Makefile
new file mode 100644
index 0000000..7f06b92
--- /dev/null
+++ b/projects/SmallExamples/ModuleMaker/tools/ModuleMaker/Makefile
@@ -0,0 +1,25 @@
+#
+# LEVEL - Indicate where we are relative to the top of the source tree.
+#
+LEVEL=../..
+
+#
+# TOOLNAME = Give the name of the tool.
+#
+TOOLNAME=ModuleMaker
+
+#
+# LLVMLIBS - List LLVM libraries that we'll need
+#
+LLVMLIBS= bcwriter vmcore support.a
+
+# 
+# USEDLIBS - List all project local libraries here
+#
+#USEDLIBS=
+
+#
+# Include Makefile.common so we know what to do.
+#
+include $(LEVEL)/Makefile.common
+
diff --git a/projects/SmallExamples/ModuleMaker/tools/ModuleMaker/ModuleMaker.cpp b/projects/SmallExamples/ModuleMaker/tools/ModuleMaker/ModuleMaker.cpp
new file mode 100644
index 0000000..1d06c2d
--- /dev/null
+++ b/projects/SmallExamples/ModuleMaker/tools/ModuleMaker/ModuleMaker.cpp
@@ -0,0 +1,52 @@
+//===- ModuleMaker.cpp - Example project which creates modules --*- C++ -*-===//
+//
+// This programs is a simple example that creates an LLVM module "from scratch",
+// emitting it as a bytecode file to standard out.  This is just to show how
+// LLVM projects work and to demonstrate some of the LLVM APIs.
+//
+//===----------------------------------------------------------------------===//
+
+#include "llvm/Module.h"
+#include "llvm/DerivedTypes.h"
+#include "llvm/Constants.h"
+#include "llvm/Instructions.h"
+#include "llvm/Bytecode/Writer.h"
+
+int main() {
+  // Create the "module" or "program" or "translation unit" to hold the
+  // function
+  Module *M = new Module("test");
+  
+  // Create the main function: first create the type 'int ()'
+  FunctionType *FT = FunctionType::get(Type::IntTy, std::vector<const Type*>(),
+                                       /*not vararg*/false);
+  
+  // By passing a module as the last parameter to the Function constructor,
+  // it automatically gets appended to the Module.
+  Function *F = new Function(FT, Function::ExternalLinkage, "main", M);
+  
+  // Add a basic block to the function... again, it automatically inserts
+  // because of the last argument.
+  BasicBlock *BB = new BasicBlock("EntryBlock", F);
+  
+  // Get pointers to the constant integers...
+  Value *Two = ConstantSInt::get(Type::IntTy, 2);
+  Value *Three = ConstantSInt::get(Type::IntTy, 3);
+  
+  // Create the add instruction... does not insert...
+  Instruction *Add = BinaryOperator::create(Instruction::Add, Two, Three,
+                                            "addresult");
+  
+  // explicitly insert it into the basic block...
+  BB->getInstList().push_back(Add);
+  
+  // Create the return instruction and add it to the basic block
+  BB->getInstList().push_back(new ReturnInst(Add));
+  
+  // Output the bytecode file to stdout
+  WriteBytecodeToFile(M, std::cout);
+  
+  // Delete the module and all of its contents.
+  delete M;
+  return 0;
+}
