listener class skeleton