add drag listener
drag and state listener