added init and listener