diff --git a/assignment/socket_chat--patterns-and-testing.md b/assignment/socket_chat--patterns-and-testing.md
index 6b7e04f152e54e1b05af56ede76fe5dac1f65adf..a0b9bcbfef96450ea9d4b0146e63188bfd17e149 100644
--- a/assignment/socket_chat--patterns-and-testing.md
+++ b/assignment/socket_chat--patterns-and-testing.md
@@ -75,6 +75,30 @@ git commit --author="Herbie Husker <herbie@huskers.unl.edu>"
         project, so you can follow your IDE's instructions to import a Maven
         project.
 
+## Issue Tracker
+
+We have pre-populated your repository's Issue Tracker with issues for the
+various parts of the assignment that need to be completed. **We do *not*
+guarantee that the pre-populated issues are complete; this document is the
+authoritative source of requirements.**
+
+-   A good way to coordinate who is working on which parts of the code is to
+    use the [web interface](https://docs.gitlab.com/ee/user/project/issues/index.html#issue-page)
+    to "assign" an issue to a team member.
+-   You may [add more issues](https://docs.gitlab.com/ee/user/project/issues/managing_issues.html#create-a-new-issue)
+    to the Issue Tracker if you wish. This is common when you discover more
+    tasks that need to be accomplished or when you want to divide an existing
+    issue into finer-grained tasks (the original issue would still exist, but
+    the finer-grained issues may make it easier to divide the work).
+-   When you have completed a task, [close the corresponding issue](https://docs.gitlab.com/ee/user/project/issues/managing_issues.html#closing-issues).
+    You can do this through the issue tracker, or you can do it through a
+    commit message.
+    -   To close an issue through a commit message, include a keyword such as
+        `closes #12` in a commit message. You cannot create a commit message
+        only to close an issue; this must be a commit message for adding/
+        changing/removing files or for a merge.  See <https://docs.gitlab.com/ee/user/project/issues/managing_issues.html#default-closing-pattern>
+        for keywords that will close an issue.
+
 ## Assignment
 
 Look over the starter code, view
@@ -124,7 +148,7 @@ code. Since the basename we're using is "socketchat", the file with the English-
 language strings is `socketchat_en.properties`.
 
 -   The repository includes what may appear to be a file simply named
-    `socketchat.properties`. **Do not edit this file**.
+    `socketchat.properties`. **Do not directly edit this file**.
 
 Notice that some of the value strings have numbered arguments such as `{0}` and
 `{1}`. When combined with `MessageFormat.format()`, this allows us to create
@@ -304,6 +328,12 @@ We will use a parameterized factory.
     the second argument. Write enough tests to attain *statement coverage* of
     `createCipher(String, String[])`.
 
+    -   You can confirm that you have statement coverage by generating a
+        coverage report.
+        -   Eclipse: <https://www.eclemma.org/userdoc/importexport.html>
+            -   Instructions at the bottom of that page. Export as HTML.
+        -   IntelliJ IDEA: <https://www.jetbrains.com/help/idea/generating-code-coverage-report.html>
+
 That's it. That's your Simple Factory.
 
 Now it's time to use it.
@@ -385,7 +415,7 @@ the correct repository, or that we cannot access, will not be graded.*
 
 ## Rubric
 
-The assignment is worth **20 points**:
+The assignment is worth **22 points**:
 
 -   **4 points** for internationalization
     -   1 points for creating the properties file for the other language
@@ -399,12 +429,30 @@ The assignment is worth **20 points**:
     -   1 point for delegating `encipher` and `decipher`
     -   3 points for writing the code to change cipher algorithms
 
+-   **3 points** for tests
+    -   1 point for testing `encipher` and `decipher` for your two classical
+        cipher algorithms
+    -   2 points for writing sufficient tests to attain statement coverage of
+        `CipherFactory.createCipher(String, String[])`
+
 -   **1 point** for making regular commits; *i.e.*, not waiting until the end
     of the project to make a massive commit.
 
--   **3 point** for meaningful and well-formatted commit messages
+-   **2 points** for meaningful commit messages
+
+This assignment is scoped for a team of 2 students. If, despite your attempts
+to engage your partner, your partner does not contribute to the assignment then
+we will take that into account when grading.
 
 *If **at any time** your repository is public or has internal visibility then
 you will receive a 10% penalty. Further, if another student accesses your
 non-private repository and copies your solution then I will assume that you are
 complicit in their academic dishonesty.*
+
+## Contribution Rubric
+
+The contribution is worth **10 points**:
+
+-   **1 point** for completing peer assessment
+-   **5 points** for equitable contribution based on peer assessments
+-   **4 points** for equitable contribution based on git history