added debouncer (thanks to Eyal Schneider - http://stackoverflow.com/questions/4742210/implementing-debounce-in-java)