diff --git a/src/common/network.cpp b/src/common/network.cpp
index d7b2149..00f700b 100644
--- a/src/common/network.cpp
+++ b/src/common/network.cpp
@@ -146,17 +146,13 @@ QStringList Network::nicks() const {
   return nicks;
 }
 
-QString Network::prefixes() {
-  if(_prefixes.isNull())
-    determinePrefixes();
 
+
+QString Network::prefixes() {
   return _prefixes;
 }
 
 QString Network::prefixModes() {
-  if(_prefixModes.isNull())
-    determinePrefixes();
-
   return _prefixModes;
 }
 
diff --git a/src/common/network.h b/src/common/network.h
index f0bd112..9dea707 100644
--- a/src/common/network.h
+++ b/src/common/network.h
@@ -134,6 +134,7 @@ public:
   //Network::ConnectionState connectionState() const;
   inline int connectionState() const { return _connectionState; }
 
+  void determinePrefixes();
   QString prefixToMode(const QString &prefix);
   inline QString prefixToMode(const QCharRef &prefix) { return prefixToMode(QString(prefix)); }
   QString modeToPrefix(const QString &mode);
@@ -358,7 +359,6 @@ private:
   bool _unlimitedReconnectRetries;
   bool _rejoinChannels;
 
-  void determinePrefixes();
 
   QTextCodec *_codecForServer;
   QTextCodec *_codecForEncoding;
diff --git a/src/core/ircserverhandler.cpp b/src/core/ircserverhandler.cpp
index ce15f78..90a7e75 100644
--- a/src/core/ircserverhandler.cpp
+++ b/src/core/ircserverhandler.cpp
@@ -619,6 +619,9 @@ void IrcServerHandler::handle005(const QString &prefix, const QList<QByteArray>
     QString value = rawSupport.section("=", 1);
     network()->addSupport(key, value);
   }
+
+  /* determine our prefixes here to get an accurate result */
+  network()->determinePrefixes();
 }
 
 /* RPL_UMODEIS - "<user_modes> [<user_mode_params>]" */
