refactor blocklistener