preliminary work with ADTs for Functors and Atoms