basic flow, listeners