diff --git a/main.py b/main.py
index cf73ee3..2908ca9 100644
--- a/main.py
+++ b/main.py
@@ -10,6 +10,9 @@
 import json
 from fake_data import generate_fake_data
 from check_email import check_email
+import requests
+import random
+import fake_useragent
 
 
 
@@ -125,7 +128,13 @@ def __init__(self, config_file=None, proxy_host=None, proxy_port=None, username=
     def open_signup_page(self):
         chrome_options = Options()
         chrome_options.add_argument("--lang=en")
-        chrome_options.add_argument("--headless=new")
+       #chrome_options.add_argument("--headless=new")
+
+        # Download the latest NopeCHA crx extension file.
+        # You can also supply a path to a directory with unpacked extension files.
+        with open('ext.crx', 'wb') as f:
+            f.write(requests.get('https://nopecha.com/f/ext.crx').content)
+
         
         if not self.driver:
             mode = config['mode']
@@ -149,25 +158,17 @@ def open_signup_page(self):
                 )
                 chrome_options.add_extension(proxy_auth_plugin_path)
     
-            chrome_options.add_extension('Captcha-Solver-Auto-captcha-solving-service.crx')
-    
+            # Add NopeCHA extension
+            chrome_options.add_extension('ext.crx')
+
             self.driver = webdriver.Chrome(options=chrome_options)
-    
-            # Configure capsolver extension
-    
+
+            # Set the subscription key for the NopeCHA extension
+            self.driver.get(f"https://nopecha.com/setup#{api_key}")
+            
             time.sleep(2)
             self.driver.get('https://www.google.com')
-            capsolver_src = self.driver.find_element(By.XPATH, '/html/script[2]')
-            capsolver_src = capsolver_src.get_attribute('src')
-            capsolver_ext_id = capsolver_src.split('/')[2]
-            self.driver.get(f'chrome-extension://{capsolver_ext_id}/www/index.html#/popup')
-            time.sleep(5)
-            
-            api_key_input = self.driver.find_element(By.XPATH, '//input[@placeholder="Please input your API key"]')
-            api_key_input.send_keys(api_key)
-            self.driver.find_element(By.ID, 'q-app').click()
-            time.sleep(5)
-    
+            time.sleep(2)    
     
             self.driver.get('https://signup.live.com/signup')
             time.sleep(2)
@@ -175,15 +176,14 @@ def open_signup_page(self):
 
     def fill_signup_form(self):
         # Wait until the element is available
-        element = WebDriverWait(self.driver, 10).until(
+        element = WebDriverWait(self.driver, 30).until(
             EC.presence_of_element_located((By.ID, "liveSwitch"))
         )
         # Click the element
         element.click()
-
         # Wait until the email input field is available
-        email_input = WebDriverWait(self.driver, 10).until(
-            EC.presence_of_element_located((By.ID, "MemberName"))
+        email_input = WebDriverWait(self.driver, 30).until(
+            EC.presence_of_element_located((By.ID, "usernameInput"))
         )
 
         # Generate fake data and check email availability
@@ -199,34 +199,26 @@ def fill_signup_form(self):
                 print(f"{email} is not available. Generating new email ...")
 
         # If the email is available, continue with the registration process
-        email_input.send_keys(email)
-
-        time.sleep(2)
+        email_input.send_keys(login)
 
         # Wait until the "Next" button is available and click it
         next_button = WebDriverWait(self.driver, 10).until(
-            EC.element_to_be_clickable((By.ID, "iSignupAction"))
+            EC.element_to_be_clickable((By.ID, "nextButton"))
         )
         next_button.click()
-        
-        time.sleep(2)
-
 
         # Wait until the password input field is available
         password_input = WebDriverWait(self.driver, 10).until(
-            EC.presence_of_element_located((By.ID, "PasswordInput"))
+            EC.presence_of_element_located((By.ID, "Password"))
         )
-        time.sleep(2)
 
         # Type the password into the input field
         password_input.send_keys(password)
 
 
-        time.sleep(2)
-
         # Wait until the "Next" button is available after entering the password and click it
         next_button_after_password = WebDriverWait(self.driver, 10).until(
-            EC.element_to_be_clickable((By.ID, "iSignupAction"))
+            EC.element_to_be_clickable((By.ID, "nextButton"))
         )
         
         next_button_after_password.click()
@@ -244,27 +236,29 @@ def fill_signup_form(self):
 
             # Wait until the "Next" button is available after entering the password and click it
             next_button_after_password = WebDriverWait(self.driver, 10).until(
-                EC.element_to_be_clickable((By.ID, "iSignupAction"))
+                EC.element_to_be_clickable((By.ID, "nextButton"))
             )
             next_button_after_password.click()
 
         # Wait until the first name input field is available
         first_name_input = WebDriverWait(self.driver, 10).until(
-            EC.presence_of_element_located((By.ID, "FirstName"))
+            EC.presence_of_element_located((By.ID, "firstNameInput"))
         )
         # Type the first name into the input field
         first_name_input.send_keys(first_name)
 
         # Wait until the last name input field is available
         last_name_input = WebDriverWait(self.driver, 10).until(
-            EC.presence_of_element_located((By.ID, "LastName"))
+            EC.presence_of_element_located((By.ID, "lastNameInput"))
         )
         # Type the last name into the input field
         last_name_input.send_keys(last_name)
 
+
+
         # Wait until the "Next" button is available after entering the name and click it
         next_button_after_name = WebDriverWait(self.driver, 10).until(
-            EC.element_to_be_clickable((By.ID, "iSignupAction"))
+            EC.element_to_be_clickable((By.ID, "nextButton"))
         )
         next_button_after_name.click()
 
@@ -275,6 +269,8 @@ def fill_signup_form(self):
         # Select a month from the dropdown
         Select(birth_month_select).select_by_value(str(birth_date.month))
 
+
+
         # Wait until the birth day dropdown is available
         birth_day_select = WebDriverWait(self.driver, 10).until(
             EC.presence_of_element_located((By.ID, "BirthDay"))
@@ -282,6 +278,8 @@ def fill_signup_form(self):
         # Select a day from the dropdown
         Select(birth_day_select).select_by_value(str(birth_date.day))
 
+
+
         # Wait until the birth year input field is available
         birth_year_input = WebDriverWait(self.driver, 10).until(
             EC.presence_of_element_located((By.ID, "BirthYear"))
@@ -291,11 +289,10 @@ def fill_signup_form(self):
 
         # Wait until the "Next" button is available after entering the birth date and click it
         next_button_after_birth_date = WebDriverWait(self.driver, 10).until(
-            EC.element_to_be_clickable((By.ID, "iSignupAction"))
+            EC.element_to_be_clickable((By.ID, "nextButton"))
         )
         next_button_after_birth_date.click()
 
-
         # Check if SMS verification is required
         try:
             phone_number_label = WebDriverWait(self.driver, 10).until(
@@ -310,6 +307,8 @@ def fill_signup_form(self):
 
         print('Trying to solve captcha ...')
 
+        time.sleep(60)
+
         # Wait up to 300 seconds for the captcha to be solved
         ok_button = WebDriverWait(self.driver, 300).until(
             EC.presence_of_element_located((By.XPATH, '//span[@class="ms-Button-label label-117" and @id="id__0"]'))