add reconnect feature