adding multiple listener support