properly setup listeners