diff --git a/README.md b/README.md
index d56a48211..b6cce4052 100644
--- a/README.md
+++ b/README.md
@@ -1082,10 +1082,47 @@ network manager of Ubuntu will interfere with the test tool. This README is also
on the live image at `~/fragattacks/README.md`.
Note that airmon-ng may be unreliable on the live image and it's better to use [iw](https://github.com/vanhoefm/fragattacks/issues/36).
-
+
+
+# 10. Design notes
+
+The arguments given to the ping command define which actions the test tool will perform
+and when these actions are performed. Each action is separated by a comma (`,`). By default
+an action is performed after the client connected, and in that case a single letter represents
+which action is performed. Note that this is implemented in the
+[`stract2action`](https://github.com/vanhoefm/fragattacks/blob/master/research/fragattack.py#L23)
+function. Possible actions are:
+
+- `I`: obtain an IP address. By default is is done using DHCP, unless an IP address is explicitly
+ provided using the `--ip` and `--peerip` arguments, in which case nothing is done.
+- `E`: inject an encrypted packet/fragment of the ping request.
+- `P`: inject a plaintext packet/fragment of the ping request.
+- `F`: refresh the session key by initiation the 4-way handshake (as an AP) or waiting for the
+ 4-way handshake (as a client).
+- `R`: let the client reconnect to the network.
+- `D`: this is a special "meta action". Treat this like an empty fragment of the ping request
+ that is not actually sent.
+
+If there is only a single `E` or `P` action, then the ping request is injected as a single frame.
+If there are multiple `E`, `P` actions, then the ping request is fragmented, where the number
+of fragments equal the number of `E` or `P` actions. If there is the special `D` action, then
+the ping request is fragmented over the remaining `E` or `P` actions (see the examples in the table).
+This fragmentation behavior is implemented in the [PingTest](https://github.com/vanhoefm/fragattacks/blob/master/research/tests_common.py#L47)
+class.
+
+A letter can be put in front of the above actions to change when the action should be performed:
+
+- `S`: the action is performed on the 1st or 2nd message of the 4-way handshake.
+- `B`: the action is performed on the 3rd or 4th message of the 4-way handshake.
+- `A`: the action is performed immediately after the 4-way handshake completed.
+- `C`: the action is performed 1 second after the 4-way handshake completed. The amount of seconds
+ to wait can be changed by using the `--connected-delay` parameter.
+
+For example see the above two tables with commands.
+
-# 10. Change log
+# 11. Change log
**Version 1.3.4 (under progress):**:
@@ -1095,7 +1132,13 @@ Note that airmon-ng may be unreliable on the live image and it's better to use [
- Updated the modified drivers so they compile on Linux kernel 5.13 as well. This is experimental.
-- Updated the README with an example on how to install an older supported kernel on Ubuntu 20.04.
+- Made the injection test more reliable by waiting longer for frames in the reorder test.
+
+- Made several minor changes to make the code easier to compile on older platforms (that have older Python
+ version and OpenSSL libraries).
+
+- Updated the README with an example on how to install an older supported kernel on Ubuntu 20.04. Added
+ design notes. Now recommending the AWUS036ACM.
**Version 1.3.3 (11 May 2021)**: