  The theory of rack and quandle modules is developed - in particular a tensor
product is defined, and shown to satisfy an appropriate adjointness condition.
Notions of free rack and quandle modules are introduced, and used to define an
enveloping object (the `rack algebra' or `wring') for a given rack or quandle.
These constructions are then used to define homology and cohomology theories
for racks and quandles which contain all currently-known variants.
