DTLS depends on TIMING_C for now
diff --git a/include/polarssl/check_config.h b/include/polarssl/check_config.h
index c532db0..5e21f3e 100644
--- a/include/polarssl/check_config.h
+++ b/include/polarssl/check_config.h
@@ -223,8 +223,9 @@
 #endif
 
 #if defined(POLARSSL_SSL_PROTO_DTLS) && (       \
-    !defined(POLARSSL_SSL_PROTO_TLS1_1) &&      \
-    !defined(POLARSSL_SSL_PROTO_TLS1_2) )
+    ( !defined(POLARSSL_SSL_PROTO_TLS1_1) &&      \
+      !defined(POLARSSL_SSL_PROTO_TLS1_2) ) ||    \
+    !defined(POLARSSL_TIMING_C) )
 #error "POLARSSL_SSL_PROTO_DTLS defined, but not all prerequisites"
 #endif
 
diff --git a/include/polarssl/config.h b/include/polarssl/config.h
index abc2668..6e9050a 100644
--- a/include/polarssl/config.h
+++ b/include/polarssl/config.h
@@ -908,6 +908,11 @@
  *
  * Requires: POLARSSL_SSL_PROTO_TLS1_1
  *        or POLARSSL_SSL_PROTO_TLS1_2
+ *           POLARSSL_TIMING_C
+ *
+ * \note Dependency on TIMING_C may be replaced by something more flexible
+ * (callbacks or abstraction layer in the next major version). Please contact
+ * us if you're having issues with this dependency.
  *
  * Comment this macro to disable support for DTLS
  */
diff --git a/include/polarssl/ssl.h b/include/polarssl/ssl.h
index ac6f03f..c508734 100644
--- a/include/polarssl/ssl.h
+++ b/include/polarssl/ssl.h
@@ -76,7 +76,7 @@
 #include "zlib.h"
 #endif
 
-#if defined(POLARSSL_TIMING_C)
+#if defined(POLARSSL_SSL_PROTO_DTLS)
 #include "timing.h"
 #endif
 
@@ -830,14 +830,11 @@
     ssl_transform *transform_negotiate; /*!<  transform params in negotiation */
 
     /*
-     * Timers (WIP)
+     * Timers
      */
-#if defined(POLARSSL_TIMING_C)
-    struct hr_time time_info;
-    unsigned long time_limit;
-#endif
-
 #if defined(POLARSSL_SSL_PROTO_DTLS)
+    struct hr_time time_info;   /*!< timer context                      */
+    unsigned long time_limit;   /*!< limit for the running timer        */
     uint32_t hs_timeout_min;    /*!< initial value of the handshake
                                      retransmission timeout             */
     uint32_t hs_timeout_max;    /*!< maximum value of the handshake
diff --git a/library/ssl_tls.c b/library/ssl_tls.c
index 7cb1442..bfaefd4 100644
--- a/library/ssl_tls.c
+++ b/library/ssl_tls.c
@@ -79,10 +79,7 @@
 }
 
 
-/*
- * Timers (WIP)
- */
-#if defined(POLARSSL_TIMING_C)
+#if defined(POLARSSL_SSL_PROTO_DTLS)
 /*
  * Start a timer.
  * Passing millisecs = 0 cancels a running timer.
@@ -107,9 +104,7 @@
 
     return( 0 );
 }
-#endif
 
-#if defined(POLARSSL_SSL_PROTO_DTLS)
 /*
  * Double the retransmit timeout value, within the allowed range,
  * returning -1 if the maximum value has already been reached.
@@ -5755,7 +5750,7 @@
 
     if( ssl->in_offt == NULL )
     {
-#if defined(POLARSSL_TIMING_C)
+#if defined(POLARSSL_SSL_PROTO_DTLS)
         /* Start timer if not already running */
         if( ssl->time_limit == 0 )
             ssl_set_timer( ssl, ssl->read_timeout );
@@ -5912,7 +5907,7 @@
 
         ssl->in_offt = ssl->in_msg;
 
-#if defined(POLARSSL_TIMING_C)
+#if defined(POLARSSL_SSL_PROTO_DTLS)
         /* We're going to return something now, cancel timer,
          * except if handshake (renegotiation) is in progress */
         if( ssl->state == SSL_HANDSHAKE_OVER )