Implemented a bunch of functions (difference*, unions*, alter, etc.) based on specification