Memoization is for thunk-like behavior whereas this is executed eagerly.
Also move tests to separate files which are auto-imported. This should allow people adding tests concurrently without introducing merge conflicts