Check for and handle special cases separately.
To facilitate debugging, do not modify arguments.
Use new function for satiating a generic function.
Only add to call history if item does not already exist.