diff --git a/library/Icinga/Protocol/Ldap/Connection.php b/library/Icinga/Protocol/Ldap/Connection.php
index 531a399c8..6fa41e2aa 100644
--- a/library/Icinga/Protocol/Ldap/Connection.php
+++ b/library/Icinga/Protocol/Ldap/Connection.php
@@ -307,7 +307,7 @@ class Connection
         $results = @ldap_search(
             $this->ds,
             $base,
-            (string) $query,
+            $query->create(),
             $fields,
             0, // Attributes and values
             0  // No limit - at least where possible
@@ -619,7 +619,7 @@ class Connection
         $result = @ldap_read(
             $ds,
             '',
-            (string) $query,
+            $query->create(),
             $query->listFields()
         );
 
diff --git a/library/Icinga/Protocol/Ldap/Query.php b/library/Icinga/Protocol/Ldap/Query.php
index ca8f5519f..462c83d61 100644
--- a/library/Icinga/Protocol/Ldap/Query.php
+++ b/library/Icinga/Protocol/Ldap/Query.php
@@ -4,8 +4,6 @@
 
 namespace Icinga\Protocol\Ldap;
 
-use Icinga\Exception\IcingaException;
-
 /**
  * Search class
  *
@@ -84,7 +82,7 @@ class Query
     public function limit($count = null, $offset = null)
     {
         if (! preg_match('~^\d+~', $count . $offset)) {
-            throw new IcingaException(
+            throw new Exception(
                 'Got invalid limit: %s, %s',
                 $count,
                 $offset
@@ -302,21 +300,11 @@ class Query
      *
      * @string
      */
-    public function __toString()
-    {
-        return $this->render();
-    }
-
-    /**
-     * Returns the LDAP filter that will be applied
-     *
-     * @string
-     */
-    protected function render()
+    public function create()
     {
         $parts = array();
         if (! isset($this->filters['objectClass']) || $this->filters['objectClass'] === null) {
-            // throw new IcingaException('Object class is mandatory');
+            throw new Exception('Object class is mandatory');
         }
         foreach ($this->filters as $key => $value) {
             $parts[] = sprintf(
diff --git a/test/php/library/Icinga/Protocol/Ldap/QueryTest.php b/test/php/library/Icinga/Protocol/Ldap/QueryTest.php
index b710a0934..f3fa2c727 100644
--- a/test/php/library/Icinga/Protocol/Ldap/QueryTest.php
+++ b/test/php/library/Icinga/Protocol/Ldap/QueryTest.php
@@ -109,10 +109,10 @@ class QueryTest extends BaseTestCase
         $this->assertEquals('testIntColumn', $cols[0][0]);
     }
 
-    public function test__toString()
+    public function testCreateQuery()
     {
         $select = $this->prepareSelect();
         $res = '(&(objectClass=dummyClass)(testIntColumn=1)(testStringColumn=test)(testWildcard=abc*))';
-        $this->assertEquals($res, (string) $select);
+        $this->assertEquals($res, $select->create());
     }
 }