diff --git a/DesignDocument.md b/DesignDocument.md
index 626498a6af956d1a6ca1e0f3ad4b741c1c4cf70d..9b49686a074e3ea87036f05065e4f091fa648e71 100644
--- a/DesignDocument.md
+++ b/DesignDocument.md
@@ -1,6 +1,85 @@
 # Project 1 (Zip) Design Document #
 --------
 
+#### Part 1: ZIP Files ####
+
+-   Briefly describe the data structures you used, if any, to manage
+    the ZIP file format structures.<pre>
+**TODO**: Answer this question
+</pre><br>
+
+-   What approach to reading and writing files from disk did you take?
+    Why did you choose this approach?<pre>
+**TODO**: Answer this question
+</pre><br>
+
+-   How does your unzip program find the start of the file data?<pre>
+**TODO**: Answer this question
+</pre><br>
+
+-   Does your solution have any error handling capabilities? What happens
+    when a user provides an invalid or non-existant file?
+    What happens if a file read or write fails?<pre>
+**TODO**: Answer this question
+</pre><br>
+
+#### Part 2: Inflating DEFLATE Streams ####
+
+-   How does your program handle reading sequences of bits from the DEFLATE
+    stream (keeping in mind that they may not be byte-aligned)?
+    Give an overview of any data structures or abstractions you used, and why.
+    <pre>
+**TODO**: Answer this question
+</pre><br>
+
+-   How does your program decompress DEFLATE streams (that may include
+    both fixed and dynamic blocks)? Provide a brief overview of the program-flow
+    involved in the decompression. Include the names of important functions and
+    explain their purpose.<pre>
+**TODO**: Answer this question
+</pre><br>
+
+-   How did you compute and store dynamic Huffman codes? What data structures
+    did you use and what is the time complexity of matching a single symbol
+    in your implementation? (Matching a symbol is the operation of reading some
+    bits from the stream until a valid code is encountered and then decoding
+    which symbol the code represents.)
+    Why did you choose to store them in this way?<pre>
+**TODO**: Answer this question
+</pre><br>
+
+-   How did you implement repeating already-decompressed bytes when you
+    encountered an LZ77 length-distance pair?
+    Could you have implemented it more efficiently or elegantly?<pre>
+**TODO**: Answer this question
+</pre><br>
+
+#### Part 3: Compressing files with DEFLATE ####
+
+-   How did you implement an efficient search for possible repetitions when
+    implementing LZ77 compression? Why did you implement it this way?
+    Could your implementation be more efficient or elegant?<pre>
+**TODO**: Answer this question
+</pre><br>
+
+-   How did you implement converting the literal / LZ77 symbols into their
+    Huffman code equivalents? Why did you implement it this way?
+    Could your implementation be more efficient or elegant?<pre>
+**TODO**: Answer this question
+</pre><br>
+
+#### Part 4: Combining all the pieces ####
+
+-   When it came time to put all the parts of the assignment together, were
+    there any major architectural issues that needed to be resolved before
+    everything would work together? Did you need to rework portions of the
+    previous parts? If so, what could have been done differently to avoid this
+    in the future?<pre>
+**TODO**: Answer this question
+</pre><br>
+
+----
+
 #### Logistics ####
 -   How much time did each partner spend on the project (in hours)?<pre>
 **TODO**: Answer this question