jabber: the input is a sequence of bits. it maintains a stretchy (resizable) table T of patterns. initially, T contains a single pattern (empty string) at index 0. it maintains a running counter of bit-length W. initially, W = 0. while there are more bits in the input stream: find the longest pattern x in T matching that is a prefix of the input. say T[k] = x. let the next input bit after x be b. output index k in W bits followed by b. add pattern x.b to the table T at the next available index. increment W if need be (#items in T is a power of two) end wocky: the input is a sequence of bits. it maintains a stretchy (resizable) table T of patterns. initially, T contains a single pattern (empty string) at index 0. it maintains a running counter of bit-length W. initially, W = 0. while there are more bits in the input stream: read W bits from input and treat that as an index k. read next input bit, say b. outputs the pattern T[k] = x followed by bit b. add pattern x.b to the table T at the next available index. increment W if need be (#items in T is a power of two)