use arrow (->) macro for clarity
memoize calls to fail?