Closes #2. Closes #3. Closes #4.