diff --git a/.gitignore b/.gitignore
index f1c5785fc48fd53c40be0884e98e02d53f3218c3..adb9932f542594f5180aa9d6319032cbc9aff013 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,66 +1,4 @@
 *~
 *.class
 *.o
-lib/c/liblabcomm.a
-lib/c/liblabcomm.so
-lib/c/liblabcomm.so.1
-lib/c/liblabcomm2006.so.1
-lib/c/liblabcomm2006.so
-lib/c/liblabcomm2006.a
-lib/c/liblabcomm2014.so.1
-lib/c/liblabcomm2014.so
-lib/c/liblabcomm2014.a
-lib/c/20*/test/test_labcomm
-lib/c/20*/test/test_labcomm_basic_type_encoding
-lib/c/20*/test/test_labcomm_copy
-lib/c/20*/test/test_labcomm_generated_encoding
-lib/c/20*/test/test_labcomm_pthread_scheduler
-lib/c/20*/test/test_signature_numbers
-compiler/gen/
-compiler/AST/
-compiler/labcomm_compiler.jar
-compiler/labcomm2006_compiler.jar
-compiler/labcomm2014_compiler.jar
-examples/simple/encoded_data
-examples/simple/encoded_data06
-examples/simple/gen
-examples/simple/gen06
 *.pyc
-examples/twoway/gen/
-examples/duck_typing/gen/
-lib/csharp/labcomm.dll
-lib/java/gen/
-lib/java/labcomm*.jar
-examples/simple/example_decoder
-examples/simple/example_decoder06
-examples/simple/example_encoder
-examples/simple/example_encoder06
-ExampleDecoder.exe ExampleEncoder.exe
-examples/user_types/gen/
-examples/user_types/encoded_data_c 
-examples/user_types/encoded_data_cs 
-examples/user_types/encoded_data_j 
-examples/user_types/encoded_data_p
-examples/wiki_example/data.java
-examples/wiki_example/example.c
-examples/wiki_example/example.cs
-examples/wiki_example/example.encoded
-examples/wiki_example/example.h
-examples/wiki_example/example.py
-examples/wiki_example/log_message.java
-examples/wiki_example/example_encoder
-examples/user_types/ExampleDecoder.exe
-examples/user_types/ExampleEncoder.exe
-doc/tech_report.aux
-doc/tech_report.blg
-doc/tech_report.bbl
-doc/tech_report.log
-doc/tech_report.pdf
-doc/tech_report.fdb_latexmk
-examples/user_types/encoded_data_c
-examples/user_types/encoded_data_j
-examples/user_types/example_decoder
-examples/user_types/example_encoder
-doc/tech_report.fls
-examples/dynamic/encoded_data
-examples/dynamic/gen
diff --git a/compiler/.gitignore b/compiler/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..fb3995c874769be543f53f991762b1b77c16fc06
--- /dev/null
+++ b/compiler/.gitignore
@@ -0,0 +1,4 @@
+gen
+labcomm2006_compiler.jar
+labcomm2014_compiler.jar
+labcomm_compiler.jar
diff --git a/doc/.gitignore b/doc/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..df2a6e60dbf0dc336f4bc67ea1ef1b99119b2bda
--- /dev/null
+++ b/doc/.gitignore
@@ -0,0 +1,7 @@
+tech_report.aux
+tech_report.bbl
+tech_report.blg
+tech_report.fdb_latexmk
+tech_report.fls
+tech_report.log
+tech_report.pdf
\ No newline at end of file
diff --git a/examples/duck_typing/.gitignore b/examples/duck_typing/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..4f62b849d56cd043cb9725fe73e9f49522d3d931
--- /dev/null
+++ b/examples/duck_typing/.gitignore
@@ -0,0 +1 @@
+gen
diff --git a/examples/simple/.gitignore b/examples/simple/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..b2b1fa399069a6a87eeb68da5c1a10216afa9d09
--- /dev/null
+++ b/examples/simple/.gitignore
@@ -0,0 +1,8 @@
+encoded_data
+encoded_data06
+example_decoder
+example_decoder06
+example_encoder
+example_encoder06
+gen
+gen06
diff --git a/examples/twoway/.gitignore b/examples/twoway/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..4f62b849d56cd043cb9725fe73e9f49522d3d931
--- /dev/null
+++ b/examples/twoway/.gitignore
@@ -0,0 +1 @@
+gen
diff --git a/examples/user_types/.gitignore b/examples/user_types/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..30cd2538504300d26b4a1e42482cf823cfa9f4ae
--- /dev/null
+++ b/examples/user_types/.gitignore
@@ -0,0 +1,10 @@
+gen
+labcomm.dll
+ExampleDecoder.exe
+ExampleEncoder.exe
+encoded_data_c
+encoded_data_cs
+encoded_data_j
+encoded_data_p
+example_decoder
+example_encoder
diff --git a/examples/wiki_example/.gitignore b/examples/wiki_example/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..f6cc4eceff7e31458c8187a2b186930e86270a76
--- /dev/null
+++ b/examples/wiki_example/.gitignore
@@ -0,0 +1,10 @@
+data.java
+example.c
+example.cs
+example.encoded
+example.h
+example.javaencoded
+example.py
+example_encoder
+log_message.java
+
diff --git a/lib/c/.gitignore b/lib/c/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..4c36eb5c1878d88d3c542f0a8e3ca2a4d5ad02ac
--- /dev/null
+++ b/lib/c/.gitignore
@@ -0,0 +1,9 @@
+liblabcomm.a
+liblabcomm.so
+liblabcomm.so.1
+liblabcomm2006.so.1
+liblabcomm2006.so
+liblabcomm2006.a
+liblabcomm2014.so.1
+liblabcomm2014.so
+liblabcomm2014.a
diff --git a/lib/c/2006/test/.gitignore b/lib/c/2006/test/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..4f62b849d56cd043cb9725fe73e9f49522d3d931
--- /dev/null
+++ b/lib/c/2006/test/.gitignore
@@ -0,0 +1 @@
+gen
diff --git a/lib/c/2014/test/.gitignore b/lib/c/2014/test/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..4f62b849d56cd043cb9725fe73e9f49522d3d931
--- /dev/null
+++ b/lib/c/2014/test/.gitignore
@@ -0,0 +1 @@
+gen
diff --git a/lib/csharp/.gitignore b/lib/csharp/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..7252dda3fb2158fc919cd5132fa2aec35d82ef86
--- /dev/null
+++ b/lib/csharp/.gitignore
@@ -0,0 +1 @@
+labcomm.dll
diff --git a/lib/java/.gitignore b/lib/java/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..6273ee5074291f7336d0678dd6ffbbaeefd443fb
--- /dev/null
+++ b/lib/java/.gitignore
@@ -0,0 +1,5 @@
+gen
+labcomm.jar
+labcomm2006.jar
+labcomm2014.jar
+
diff --git a/test/.gitignore b/test/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..4f62b849d56cd043cb9725fe73e9f49522d3d931
--- /dev/null
+++ b/test/.gitignore
@@ -0,0 +1 @@
+gen