diff --git a/lib/base/timer.cpp b/lib/base/timer.cpp
index 3e6099da9..2a583b694 100644
--- a/lib/base/timer.cpp
+++ b/lib/base/timer.cpp
@@ -29,11 +29,40 @@
 
 using namespace icinga;
 
+namespace icinga {
+
+class TimerHolder {
+public:
+	TimerHolder(Timer *timer)
+		: m_Timer(timer)
+	{ }
+
+	inline Timer *GetObject(void) const
+	{
+		return m_Timer;
+	}
+
+	inline double GetNextUnlocked(void) const
+	{
+		return m_Timer->m_Next;
+	}
+
+	operator Timer *(void) const
+	{
+		return m_Timer;
+	}
+
+private:
+	Timer *m_Timer;
+};
+
+}
+
 typedef boost::multi_index_container<
-	Timer::Holder,
+	TimerHolder,
 	boost::multi_index::indexed_by<
-		boost::multi_index::ordered_unique<boost::multi_index::const_mem_fun<Timer::Holder, Timer *, &Timer::Holder::GetObject> >,
-		boost::multi_index::ordered_non_unique<boost::multi_index::const_mem_fun<Timer::Holder, double, &Timer::Holder::GetNextUnlocked> >
+		boost::multi_index::ordered_unique<boost::multi_index::const_mem_fun<TimerHolder, Timer *, &TimerHolder::GetObject> >,
+		boost::multi_index::ordered_non_unique<boost::multi_index::const_mem_fun<TimerHolder, double, &TimerHolder::GetNextUnlocked> >
 	>
 > TimerSet;
 
diff --git a/lib/base/timer.hpp b/lib/base/timer.hpp
index fbae485e8..d10d1dbe0 100644
--- a/lib/base/timer.hpp
+++ b/lib/base/timer.hpp
@@ -26,6 +26,8 @@
 
 namespace icinga {
 
+class TimerHolder;
+
 /**
  * A timer that periodically triggers an event.
  *
@@ -52,31 +54,6 @@ public:
 
 	boost::signals2::signal<void(const Timer::Ptr&)> OnTimerExpired;
 
-	class Holder {
-	public:
-		Holder(Timer *timer)
-			: m_Timer(timer)
-		{ }
-
-		inline Timer *GetObject(void) const
-		{
-			return m_Timer;
-		}
-
-		inline double GetNextUnlocked(void) const
-		{
-			return m_Timer->m_Next;
-		}
-
-		operator Timer *(void) const
-		{
-			return m_Timer;
-		}
-
-	private:
-		Timer *m_Timer;
-	};
-
 private:
 	double m_Interval; /**< The interval of the timer. */
 	double m_Next; /**< When the next event should happen. */
@@ -92,6 +69,7 @@ private:
 	static void Uninitialize(void);
 
 	friend class Application;
+	friend class TimerHolder;
 };
 
 }