Add reusable listener. Add doc