memoize response
refactoring with metaprogramming
make