diff --git a/src/lib-sieve/Makefile.am b/src/lib-sieve/Makefile.am
index 48550d985abd0af7b0bcfb3587c240b99e7d735a..af371feea0a47208ca89bb61f2a8ba8e8baad0be 100644
--- a/src/lib-sieve/Makefile.am
+++ b/src/lib-sieve/Makefile.am
@@ -43,8 +43,7 @@ comparators = \
 	cmp-i-ascii-casemap.c
 
 if BUILD_UNFINISHED
-unfinished_plugins = \
-	./plugins/date/libsieve_ext_date.la
+unfinished_plugins =
 endif
 
 # These are not actual plugins just yet...
@@ -63,6 +62,7 @@ plugins = \
 	./plugins/notify/libsieve_ext_notify.la \
 	./plugins/environment/libsieve_ext_environment.la \
 	./plugins/mailbox/libsieve_ext_mailbox.la \
+	./plugins/date/libsieve_ext_date.la \
 	$(unfinished_plugins)
 
 libsieve_la_DEPENDENCIES = $(plugins)
diff --git a/src/lib-sieve/plugins/Makefile.am b/src/lib-sieve/plugins/Makefile.am
index 8b29be1fd4a1d1d21c75f9965e7f915f9b800fc8..b571efa7a33fdb4af669c7b9cff274c9ebf75146 100644
--- a/src/lib-sieve/plugins/Makefile.am
+++ b/src/lib-sieve/plugins/Makefile.am
@@ -1,5 +1,5 @@
 if BUILD_UNFINISHED
-UNFINISHED = date
+UNFINISHED =
 endif
 
 SUBDIRS = \
@@ -17,5 +17,6 @@ SUBDIRS = \
 	notify \
 	environment \
 	mailbox \
+	date \
 	$(UNFINISHED)
 
diff --git a/src/lib-sieve/plugins/date/ext-date.c b/src/lib-sieve/plugins/date/ext-date.c
index 5d809688f4f1ddf0439ba821d506af210b0b7096..6d5cf9adff965de4e7c928de3f43a17347ea7a5d 100644
--- a/src/lib-sieve/plugins/date/ext-date.c
+++ b/src/lib-sieve/plugins/date/ext-date.c
@@ -6,8 +6,8 @@
  *
  * Authors: Stephan Bosch
  * Specification: RFC 5260
- * Implementation: skeleton
- * Status: under development
+ * Implementation: full
+ * Status: experimental
  *
  */
  
diff --git a/src/lib-sieve/sieve-extensions.c b/src/lib-sieve/sieve-extensions.c
index 040d86b9e83d05066528eb35cb05b83735c3bc43..9f9fb72ecf8e0aebd743be00b2655da3d149400f 100644
--- a/src/lib-sieve/sieve-extensions.c
+++ b/src/lib-sieve/sieve-extensions.c
@@ -81,18 +81,8 @@ extern const struct sieve_extension variables_extension;
 extern const struct sieve_extension enotify_extension;
 extern const struct sieve_extension environment_extension;
 extern const struct sieve_extension mailbox_extension;
-
-/*
- * Extensions under development
- */
-
-#ifdef HAVE_SIEVE_UNFINISHED
-
-extern const struct sieve_extension ereject_extension;
 extern const struct sieve_extension date_extension;
 
-#endif
-
 /*
  * List of native extensions
  */
@@ -107,13 +97,6 @@ const struct sieve_extension *sieve_core_extensions[] = {
 	/* Core extensions */
 	&fileinto_extension, &reject_extension, &envelope_extension, 
 	&encoded_character_extension,
-
-	/* Extensions under development */
-
-#ifdef HAVE_SIEVE_UNFINISHED
-	&ereject_extension,
-	&date_extension,
-#endif
 	
 	/* 'Plugins' */
 	&vacation_extension, &subaddress_extension, 
@@ -121,7 +104,7 @@ const struct sieve_extension *sieve_core_extensions[] = {
 	&relational_extension, &regex_extension, &imap4flags_extension,
 	&copy_extension, &include_extension, &body_extension,
 	&variables_extension, &enotify_extension, &environment_extension,
-	&mailbox_extension
+	&mailbox_extension, &date_extension
 };
 
 const unsigned int sieve_core_extensions_count =
@@ -135,7 +118,6 @@ extern const struct sieve_extension imapflags_extension;
 extern const struct sieve_extension notify_extension;
 
 const struct sieve_extension *sieve_deprecated_extensions[] = {
-	/* Deprecated extensions */
 	&imapflags_extension,
 	&notify_extension
 };
@@ -143,6 +125,23 @@ const struct sieve_extension *sieve_deprecated_extensions[] = {
 const unsigned int sieve_deprecated_extensions_count =
 	N_ELEMENTS(sieve_deprecated_extensions);
 
+/*
+ * Unfinished extensions
+ */
+
+#ifdef HAVE_SIEVE_UNFINISHED
+
+extern const struct sieve_extension ereject_extension;
+
+const struct sieve_extension *sieve_unfinished_extensions[] = {
+	&ereject_extension,
+};
+
+const unsigned int sieve_unfinished_extensions_count =
+	N_ELEMENTS(sieve_unfinished_extensions);
+
+#endif /* HAVE_SIEVE_UNFINISHED */
+
 /* 
  * Extensions init/deinit
  */
@@ -164,6 +163,13 @@ bool sieve_extensions_init(void)
 		(void)sieve_extension_register(sieve_deprecated_extensions[i], FALSE);
 	}
 
+#ifdef HAVE_SIEVE_UNFINISHED
+	/* Register unfinished extensions */
+	for ( i = 0; i < sieve_unfinished_extensions_count; i++ ) {
+		(void)sieve_extension_register(sieve_unfinished_extensions[i], FALSE);
+	}
+#endif
+
 	/* More extensions can be added through plugins */
 	
 	return TRUE;