Add the full predicate
Haddockize
Add read, enqueue, and dequeue; rename push to write