added benchmarking so that memoization would intelligently be used only when effective
added option for object of views