setup complete, next two things to work on are 1) figuring out how to do Addr/Time 'right' and 2) generalizing all the interfaces to support (Ord) as a constraint (for Set monad)