Add foreign listener and change collection load
add cacher