diff --git a/common/rfb/ScreenSet.h b/common/rfb/ScreenSet.h
index 0783871..55abb50 100644
--- a/common/rfb/ScreenSet.h
+++ b/common/rfb/ScreenSet.h
@@ -48,7 +48,26 @@
 
   struct ScreenSet {
     ScreenSet(void) {};
+
+    typedef std::list<Screen>::iterator iterator;
+    typedef std::list<Screen>::const_iterator const_iterator;
+
+    inline iterator begin(void) { return screens.begin(); };
+    inline const_iterator begin(void) const { return screens.begin(); };
+    inline iterator end(void) { return screens.end(); };
+    inline const_iterator end(void) const { return screens.end(); };
+
+    inline int num_screens(void) const { return screens.size(); };
+
     inline void add_screen(const Screen screen) { screens.push_back(screen); };
+    inline void remove_screen(rdr::U32 id) {
+      std::list<Screen>::iterator iter;
+      for (iter = screens.begin();iter != screens.end();++iter) {
+        if (iter->id == id)
+            screens.erase(iter);
+      }
+    }
+
     inline bool validate(int fb_width, int fb_height) const {
       std::list<Screen>::const_iterator iter;
       std::set<rdr::U32> seen_ids;
@@ -56,6 +75,8 @@
 
       if (screens.empty())
         return false;
+      if (num_screens() > 255)
+        return false;
 
       fb_rect.setXYWH(0, 0, fb_width, fb_height);
 
@@ -71,6 +92,7 @@
 
       return true;
     };
+
     std::list<Screen> screens;
   };
 
