                         # --> EXPERIMENTAL identity based lookups cache -> nero
                         
                         if USELOOKUPSCACHE # inactive if false here
+                            if !(lookupscache = LOOKUPSCACHE[__ident])
+                                @logger.debug 'create lookups cache for', __ident
+                    
+                                lookupscache = LOOKUPSCACHE[__ident] = {}                                
+                                
+                                identity.on 'destroyed', _destroy = ()=>                                    
+                                    @logger.debug 'destroy lookups cache for', __ident
+                                    delete LOOKUPSCACHE[__ident]
+                    
+                                lookupscache._off = ()->
+                                    identity.off 'destroyed', _destroy
+
                             if !lookupscache[name]
-                                @logger.info 'add %s to cache for', name, __ident
+                                @logger.debug 'add %s to cache for', name, __ident
                             
                                 lookupscache[name] = ctx
+                                
+                                ctx.on 'destroyed', ()=>
+                                    @logger.debug 'delete %s from cache for', name, __ident
+                                    delete lookupscache[name]
                         
                         # <-- EXERIMENTAL
                         

            _parent = !!(@parent && @parent.lookup)
            _global = !!(!@parent && floyd.__parent?.lookup)
            
            @logger.debug 'lookup:', name, identity.id
            
            # --> EXPERIMENTAL identity based lookups cache -> nero
            
            if USELOOKUPSCACHE # inactive if false here
                if !(lookupscache = LOOKUPSCACHE[__ident])
                    @logger.info 'create lookups cache for', __ident
                    
                    lookupscache = LOOKUPSCACHE[__ident] = {}
                        
                    identity.on 'destroyed', ()=>
                        @logger.info 'destroy lookups cache for', __ident
                        delete LOOKUPSCACHE[__ident]
                    
                    
                        
                        
                ## interrupt search here and return lookup from cache
                if lookupscache[name]
                    @logger.debug 'found cached:', name, identity.id
                    return done(null, lookupscache[name]) 
                

        ## * emits shutdown and stopped
        ##
        stop: (done)->
            @_changeStatus 'shutdown'
            
            # --> EXPERIMENTAL identity based lookups cache -> nero

            if USELOOKUPSCACHE
                for ident in floyd.tools.objects.keys LOOKUPSCACHE
                    LOOKUPSCACHE[ident]._off()
                    delete LOOKUPSCACHE[ident]

            # <-- EXPERIMENTAL
            
            @_init 'stop', 'stopped', done

