diff --git a/src/sbbs3/umonitor/GNUmakefile b/src/sbbs3/umonitor/GNUmakefile
index be86d3eac6bfe29ff028fe8d3677c8cdbdc89cb1..f82273b693079f2928f35c48303c353fd4f3321d 100644
--- a/src/sbbs3/umonitor/GNUmakefile
+++ b/src/sbbs3/umonitor/GNUmakefile
@@ -13,6 +13,9 @@
 
 # $Id$
 
+#USE_CURSES	:=	1	#Use old curses UIFC implementation
+USE_UIFC32	:=	1	# Use new uifc32 implementation
+
 # Macros
 ifndef RELEASE
  ifndef DEBUG
@@ -89,7 +92,6 @@ vpath %.cpp $(SBBS3)
 
 OBJS	:=	$(LIBODIR)/filewrap.o \
 			$(LIBODIR)/chat.o \
-			$(LIBODIR)/uifcc.o \
 			$(LIBODIR)/sockwrap.o \
 			$(LIBODIR)/dirwrap.o \
 			$(LIBODIR)/genwrap.o \
@@ -111,6 +113,15 @@ OBJS	:=	$(LIBODIR)/filewrap.o \
 			$(LIBODIR)/getmail.o \
 			$(LIBODIR)/umonitor.o
 
+ifdef USE_CURSES
+ OBJS	+=	$(LIBODIR)/uifcc.o
+endif
+
+ifdef USE_UIFC32
+ OBJS	+=	$(LIBODIR)/uifc32.o \
+		$(LIBODIR)/ciowrap.o
+endif
+
 all: $(LIBODIR) $(BUILD_DEPENDS)$(EXEODIR)/umonitor
 
 FORCE$(EXEODIR)/umonitor: $(EXEODIR) $(OBJS) $(BUILD_DEPENDS)
diff --git a/src/sbbs3/umonitor/umonitor.c b/src/sbbs3/umonitor/umonitor.c
index 169e9ed6c6a7049b1b818f576dc499b526ac16a9..14fa5ad42b4c70371618c6752a0de91aef32112f 100644
--- a/src/sbbs3/umonitor/umonitor.c
+++ b/src/sbbs3/umonitor/umonitor.c
@@ -500,7 +500,11 @@ int main(int argc, char** argv)  {
 	signal(SIGPIPE, SIG_IGN);   
 
 	uifc.size=sizeof(uifc);
+#ifdef USE_CURSES
 	i=uifcinic(&uifc);  /* curses */
+#else
+	i=uifcini32(&uifc);  /* curses */
+#endif
 	if(i!=0) {
 		printf("uifc library init returned error %d\n",i);
 		exit(1);