rearrange DataLayerListenerService; fix double tap bug