subscription is handled in process_connection()