[FIX] move caching to utile and make generic

work around to store instances with specific type