add MethodCacher, fixes #14