added materialize
added memoize