diff --git a/botcha.module b/botcha.module
index b761335..c9e4e89 100644
--- a/botcha.module
+++ b/botcha.module
@@ -7,6 +7,7 @@
  */
 
 // This switch is for phpunit testing which doesn't have Drupal bootstrapped.
+// @todo ?Do we need it really?
 if (drupal_is_cli()) {
   require_once DRUPAL_ROOT . '/sites/all/modules/botcha/controller/application/botcha.application.controller.inc';
 }
diff --git a/controller/application/botcha.application.controller.inc b/controller/application/botcha.application.controller.inc
index ac4b492..88514a7 100644
--- a/controller/application/botcha.application.controller.inc
+++ b/controller/application/botcha.application.controller.inc
@@ -43,7 +43,6 @@ interface IBotcha {
   public function recipebook_title($recipebook);
   //public function theme();
   // Necessary Botcha functions.
-  public function clean();
   public function generateSecretKey();
   //public function formAccess($botcha_form);
   public function formExists($value);
@@ -326,15 +325,6 @@ class Botcha extends Application implements IBotcha {
    */
 
   /**
-   * Clean environment data.
-   */
-  public function clean() {
-    foreach ($this->getControllers() as $controller) {
-      $controller->clean();
-    }
-  }
-
-  /**
    * Generate a random secret key.
    */
   public function generateSecretKey() {
diff --git a/controller/application/decorator/logger/botcha.application.controller.logger.inc b/controller/application/decorator/logger/botcha.application.controller.logger.inc
index f0f5255..4ad63d9 100644
--- a/controller/application/decorator/logger/botcha.application.controller.logger.inc
+++ b/controller/application/decorator/logger/botcha.application.controller.logger.inc
@@ -53,7 +53,6 @@ class BotchaLogger extends ApplicationLogger implements IBotcha {
   public function recipebook_title($recipebook) { return $this->logCall('recipebook_title', array($recipebook)); }
   public function theme() { return $this->logCall('theme', array()); }
   // Necessary Botcha functions.
-  public function clean() { return $this->logCall('clean', array()); }
   public function generateSecretKey() { return $this->logCall('generateSecretKey', array()); }
   //public function formAccess($botcha_form) { return $this->logCall('formAccess', array($botcha_form)); }
   public function formExists($value) { return $this->logCall('formExists', array($value)); }
diff --git a/controller/form/botcha.form.controller.inc b/controller/form/botcha.form.controller.inc
index be1ce6a..507b0b9 100644
--- a/controller/form/botcha.form.controller.inc
+++ b/controller/form/botcha.form.controller.inc
@@ -6,7 +6,6 @@
  */
 
 interface IBotchaFormController {
-  public function clean();
   public function getForm($form_id, $create = TRUE);
   public function getForms($reset = FALSE);
   public function save($form);
@@ -58,13 +57,6 @@ class BotchaFormController extends Controller implements IBotchaFormController {
   }
 
   /**
-   * Clean environment data.
-   */
-  public function clean() {
-    unset($_SESSION[self::SESSION_FORMS]);
-  }
-
-  /**
    * Gets a form from cache. If it does not exists in cache - gets from
    * database. If it does not exists there also - returns new form or
    * BotchaFormNone depending on input parameter.
diff --git a/controller/form/decorator/logger/botcha.form.controller.logger.inc b/controller/form/decorator/logger/botcha.form.controller.logger.inc
index 1c42108..e1a003b 100644
--- a/controller/form/decorator/logger/botcha.form.controller.logger.inc
+++ b/controller/form/decorator/logger/botcha.form.controller.logger.inc
@@ -13,7 +13,6 @@ class BotchaFormControllerLogger extends ControllerLogger implements IBotchaForm
   protected $app_name = 'Botcha';
   protected $controller_type = Botcha::CONTROLLER_TYPE_FORM;
 
-  public function clean() { return $this->logCall('clean', array()); }
   public function getForm($form_id, $create = TRUE) { return $this->logCall('getForm', array($form_id, $create)); }
   public function getForms($reset = FALSE) { return $this->logCall('getForms', array($reset)); }
   public function save($form) { return $this->logCall('save', array($form)); }
diff --git a/controller/recipe/botcha.recipe.controller.inc b/controller/recipe/botcha.recipe.controller.inc
index cef8833..226734f 100644
--- a/controller/recipe/botcha.recipe.controller.inc
+++ b/controller/recipe/botcha.recipe.controller.inc
@@ -6,7 +6,6 @@
  */
 
 interface IBotchaRecipeController {
-  public function clean();
   public function getRecipe($id, $create = TRUE);
   public function getRecipes($reset = FALSE);
   public function save($recipe);
@@ -26,10 +25,6 @@ class BotchaRecipeController extends Controller implements IBotchaRecipeControll
     return parent::getModel();
   }
 
-  public function clean() {
-    unset($_SESSION[self::SESSION_RECIPES]);
-  }
-
   public function getRecipe($id, $create = TRUE) {
     // @todo Respect $create parameter.
     $r = $this->getModel()->getRecipe($id);
diff --git a/controller/recipe/decorator/logger/botcha.recipe.controller.logger.inc b/controller/recipe/decorator/logger/botcha.recipe.controller.logger.inc
index 9df9478..eb5b30e 100644
--- a/controller/recipe/decorator/logger/botcha.recipe.controller.logger.inc
+++ b/controller/recipe/decorator/logger/botcha.recipe.controller.logger.inc
@@ -13,7 +13,6 @@ class BotchaRecipeControllerLogger extends ControllerLogger implements IBotchaRe
   protected $app_name = 'Botcha';
   protected $controller_type = Botcha::CONTROLLER_TYPE_RECIPE;
 
-  public function clean() { return $this->logCall('clean', array()); }
   public function getRecipe($id, $create = TRUE) { return $this->logCall('getRecipe', array($id, $create)); }
   public function getRecipes($reset = FALSE) { return $this->logCall('getRecipes', array($reset)); }
   public function save($recipe) { return $this->logCall('save', array($recipe)); }
diff --git a/controller/recipebook/botcha.recipebook.controller.inc b/controller/recipebook/botcha.recipebook.controller.inc
index 9cd5fe2..67c040b 100644
--- a/controller/recipebook/botcha.recipebook.controller.inc
+++ b/controller/recipebook/botcha.recipebook.controller.inc
@@ -6,7 +6,6 @@
  */
 
 interface IBotchaRecipebookController {
-  public function clean();
   public function getRecipebook($id = 'default', $create = TRUE);
   public function getRecipebooks($reset = FALSE);
   public function save($recipebook);
@@ -27,10 +26,6 @@ class BotchaRecipebookController extends Controller implements IBotchaRecipebook
     return parent::getModel();
   }
 
-  public function clean() {
-    unset($_SESSION[self::SESSION_RECIPEBOOKS]);
-  }
-
   public function getRecipebook($id = 'default', $create = TRUE) {
     $none = TRUE;
     if ($id != 'none') {
diff --git a/controller/recipebook/decorator/logger/botcha.recipebook.controller.logger.inc b/controller/recipebook/decorator/logger/botcha.recipebook.controller.logger.inc
index 497e393..b7d1ce9 100644
--- a/controller/recipebook/decorator/logger/botcha.recipebook.controller.logger.inc
+++ b/controller/recipebook/decorator/logger/botcha.recipebook.controller.logger.inc
@@ -13,7 +13,6 @@ class BotchaRecipebookControllerLogger extends ControllerLogger implements IBotc
   protected $app_name = 'Botcha';
   protected $controller_type = Botcha::CONTROLLER_TYPE_RECIPEBOOK;
 
-  public function clean() { return $this->logCall('clean', array()); }
   public function getRecipebooks($reset = FALSE) { return $this->logCall('getRecipebooks', array($reset)); }
   public function getRecipebook($id = 'default', $create = TRUE) { return $this->logCall('getRecipebook', array($id, $create)); }
   public function save($recipebook) { return $this->logCall('save', array($recipebook)); }
diff --git a/tests/botcha.selenium.test b/tests/botcha.selenium.test
index d6dd878..8e2cb71 100644
--- a/tests/botcha.selenium.test
+++ b/tests/botcha.selenium.test
@@ -14,8 +14,9 @@
  * @see http://drupalcode.org/project/selenium.git/blob/refs/heads/7.x-3.x:/INSTALL.txt
  * 2) Install Selenium and launch the server (note, that you don't need phpunit at all).
  * @see http://net.tutsplus.com/tutorials/php/how-to-use-selenium-2-with-phpunit
- * 3) Uncomment Selenium-tests below you wish to run.
- *   They are all commented to make testbot tests passed.
+ * 3) If you are going to test in Opera, Internet Explorer or other, please note
+ *   that they are launched on the original site. See special instructions from
+ *   Selenium INSTALL.txt.
  * 4) Launch them via standard Simpletest interface.
  *   If you don't see new testcases in Simpletest admin form - just flush caches.
  */
@@ -38,6 +39,17 @@ abstract class Selenium2TestCase extends DrupalSeleniumWebTestCase {
     $app_class_lower = strtolower($app_class);
     // @todo ?Should not we encapsulate decorators into ComponentFactory::get?
     $this->application = ComponentFactory::get($app_class, Component::TYPE_CONTROLLER, Component::ID_APPLICATION, unserialize(variable_get("{$app_class_lower}_decorators", serialize(array()))));
+    // Put comments on page nodes on a separate page (default in D7: below post).
+    variable_set('comment_form_location_page', COMMENT_FORM_SEPARATE_PAGE);
+  }
+
+  function testBotchaRecipeSuccess() {
+    // 1) Prepare for testing.
+    // We can't do it in setUp since it is used to provide functionality of
+    // switching connection and testing on original site.
+    // So if we put all these stuff to setUp it would work for FF and GoogleChrome
+    // and wouldn't - for browsers that use testing on original site (for
+    // example, Opera and Internet Explorer).
     // Create a normal user.
     $permissions = array(
       'access comments', 'post comments', 'skip comment approval',
@@ -53,11 +65,7 @@ abstract class Selenium2TestCase extends DrupalSeleniumWebTestCase {
     $permissions[] = 'edit any page content';
     $permissions[] = 'delete any page content';
     $this->admin_user = $this->drupalCreateUser($permissions);
-    // Put comments on page nodes on a separate page (default in D7: below post).
-    variable_set('comment_form_location_page', COMMENT_FORM_SEPARATE_PAGE);
-  }
-
-  function testBotchaRecipeSuccess() {
+    // 2) Test.
     $rbid = 'testSelenium';
     // Create test recipe book.
     $this->recipebook_controller = $this->application->getController(Botcha::CONTROLLER_TYPE_RECIPEBOOK);
@@ -96,9 +104,7 @@ abstract class Selenium2TestCase extends DrupalSeleniumWebTestCase {
         $this->recipebook_controller->save($this->recipebook);
       }
     }
-  }
-
-  public function tearDown() {
+    // 3) Remove stuff we created.
     // Delete a newly created node.
     $this->drupalLogin($this->admin_user);
     $this->drupalGet("node/{$this->node->nid}/edit");
@@ -109,7 +115,8 @@ abstract class Selenium2TestCase extends DrupalSeleniumWebTestCase {
     $this->drupalLogout();
     // Remove a test recipe book.
     $this->recipebook_controller->delete($this->recipebook);
-    parent::tearDown();
+    // @todo Remove users.
+    // @todo Remove roles.
   }
 }
 
@@ -159,6 +166,11 @@ class SeleniumOperaTestCase extends Selenium2TestCase {
       'browsers' => array('opera'),
     );
   }
+
+  public function setUp() {
+    $this->onOriginal = TRUE;
+    parent::setUp();
+  }
 }
 
 
@@ -175,5 +187,10 @@ class SeleniumIETestCase extends Selenium2TestCase {
       'browsers' => array('iexplorer'),
     );
   }
+
+  public function setUp() {
+    $this->onOriginal = TRUE;
+    parent::setUp();
+  }
 }
 }
\ No newline at end of file
diff --git a/tests/botcha.simpletest.test b/tests/botcha.simpletest.test
index 59af9e7..4e3ac0f 100644
--- a/tests/botcha.simpletest.test
+++ b/tests/botcha.simpletest.test
@@ -711,8 +711,6 @@ class BotchaAdminTestCase extends BotchaBaseWebTestCase {
    * Testing general BOTCHA admin functionality.
    */
   function testAdminGeneral() {
-    // Clean the environment.
-    $this->application->clean();
     variable_set('botcha_form_passed_counter',  $pass_cnt = rand(0, 10000));
     variable_set('botcha_form_blocked_counter', $block_cnt = rand(1, 10000));
     $build_cnt = $pass_cnt + $block_cnt;
@@ -775,8 +773,6 @@ class BotchaAdminTestCase extends BotchaBaseWebTestCase {
    * Testing of the BOTCHA administration links.
    */
   function testBotchaAdminLinks() {
-    // Clean the environment.
-    $this->application->clean();
     $form_controller = $this->application->getController(Botcha::CONTROLLER_TYPE_FORM);
     // Enable BOTCHA administration links.
     $edit = array(
@@ -859,8 +855,6 @@ class BotchaAdminTestCase extends BotchaBaseWebTestCase {
       ->setTitle($title)
       ->setDescription($description);
     $recipebook_controller->save($recipebook);
-    // Clean the environment.
-    $this->application->clean();
     $forms = array(
       'addForm',
       'editForm',
@@ -881,8 +875,6 @@ class BotchaAdminTestCase extends BotchaBaseWebTestCase {
    * Tests for creating, modifying and deleting recipe books.
    */
   function testRecipebookUI() {
-    // Clean the environment.
-    $this->application->clean();
     $forms = array(
       'addRecipebook',
       'editRecipebook',
