diff --git a/channels/h323/caps_h323.cxx b/channels/h323/caps_h323.cxx
index 2cbb743dd427844a5826e3e2f6d0eb624c4745e8..e1a643d203cb917506ed2b8c6504b1ca3081daf0 100644
--- a/channels/h323/caps_h323.cxx
+++ b/channels/h323/caps_h323.cxx
@@ -1,6 +1,7 @@
 #include <ptlib.h>
 #include <h323.h>
 #include <h245.h>
+#include "ast_h323.h"
 #include "caps_h323.h"
 
 #define DEFINE_G711_CAPABILITY(cls, code, capName) \
diff --git a/channels/h323/compat_h323.h b/channels/h323/compat_h323.h
index 2ea640c4a9d890edd3b6f1985f78e9775fd5c3d1..63da8ac8cc9488d22fae2d73e324e002798887fe 100644
--- a/channels/h323/compat_h323.h
+++ b/channels/h323/compat_h323.h
@@ -52,7 +52,7 @@ template <class _Abstract_T, typename _Key_T = PString>
 class MyPFactory: public PFactory<_Abstract_T, _Key_T>
 {
 public:
-	template <class _Contrete_T> class Worker: public PFactory<_Abstract_T, _Key_T>::WorkerBase
+	template <class _Concrete_T> class Worker: public PFactory<_Abstract_T, _Key_T>::WorkerBase
 	{
 	public:
 		Worker(const _Key_T &_key, bool singleton = false)
@@ -64,6 +64,8 @@ public:
 		{
 			PFactory<_Abstract_T, _Key_T>::Unregister(key);
 		}
+	protected:
+		virtual _Abstract_T *Create(const _Key_T &) const { return new _Concrete_T; }
 
 	private:
 		PString key;