added caching mechanism
clean