comments
abstract stores with recursion