[ ] Make sure general purpose data types and instances (that might be used by more than one kind of unification, or might be reused) are separated from modules related to a specific notion of unification.
Could also change unification algorithm to allow arbitrary first order unification then get rid of all the other unification things that are cluttering things up.
We'd like to clean up the code