diff --git a/include/class.banlist.php b/include/class.banlist.php
index 9b436bc3bf756fcd40f71a9a0e674e2fb661e8fb..8b1ebba922d67896e269279828de5e3645eac396 100644
--- a/include/class.banlist.php
+++ b/include/class.banlist.php
@@ -81,7 +81,7 @@ class Banlist {
     }
 
     function getSystemBanList() {
-        return new Filter(self::ensureSystemBanList());
+        return self::ensureSystemBanList();
     }
 
     static function getFilter() {
diff --git a/include/class.filter.php b/include/class.filter.php
index 2170f412bc90cd3d4cc1b2f817f839465cc338ea..8c3abe84260e9e6b06eafdc9492f65e92765ecfa 100755
--- a/include/class.filter.php
+++ b/include/class.filter.php
@@ -184,7 +184,8 @@ extends VerySimpleModel {
         $rule = array_merge($extra,array('what'=>$what, 'how'=>$how, 'val'=>$val));
         $rule = new FilterRule($rule);
         $this->rules->add($rule);
-        $rule->save();
+        if ($rule->save())
+            return true;
     }
 
     function removeRule($what, $how, $val) {
@@ -200,7 +201,7 @@ extends VerySimpleModel {
     }
 
     function getRuleById($id) {
-        return FilterRule::lookup($id, $this->getId());
+        return FilterRule::lookup(array('id'=>$id, 'filter_id'=>$this->getId()));
     }
 
     function containsRule($what, $how, $val) {