--- /dev/null
+#if NESC >= 130
+
+struct @bound @deputy_scope() @macro("__DEPUTY_BOUND") { void *lo, *hi; };
+struct @count @deputy_scope() @macro("__DEPUTY_COUNT") { int n; };
+struct @single @deputy_scope() @macro("__DEPUTY_SINGLE") { };
+struct @nonnull @deputy_scope() @macro("__DEPUTY_NONNULL") { };
+
+#define COUNT(x) @count(x)
+#define BOUND(x,y) @bound(x,y)
+#define SINGLE @single()
+#define NONNULL @nonnull()
+
+#ifdef SAFE_TINYOS
+#define TCAST(__type,__expr) ((__type)((void * __DEPUTY_TRUSTED __DEPUTY_COPYTYPE)(__expr)))
+#define __DEPUTY_TRUSTED __attribute__((trusted))
+#define __DEPUTY_COPYTYPE __attribute__((copytype))
+#else
+#define TCAST(__type,__expr) ((__type)(__expr))
+#endif
+
+#else // NESC < 130
+
+#ifdef SAFE_TINYOS
+#error Safe TinyOS requires nesC >= 1.3.0
+#endif
+
+#endif
--- /dev/null
+#ifdef SAFE_TINYOS
+
+#define __DEPUTY_BOUND(__lo,__hi) __attribute__((bounds((__lo),(__hi))))
+#define __DEPUTY_COUNT(__n) __DEPUTY_BOUND(__this, __this + (__n))
+#define __DEPUTY_SINGLE(__n) __DEPUTY_COUNT(1)
+#define __DEPUTY_NONNULL(__n) __attribute__((nonnull))
+#define __DEPUTY_TRUSTEDBLOCK __blockattribute__((trusted))
+
+#else
+
+#define __DEPUTY_BOUND(__lo,__hi)
+#define __DEPUTY_COUNT(__n)
+#define __DEPUTY_SINGLE(__n)
+#define __DEPUTY_NONNULL(__n)
+#define __DEPUTY_TRUSTEDBLOCK
+
+#endif
+++ /dev/null
-#define __DEPUTY_BOUND(__lo,__hi) __attribute__((bounds((__lo),(__hi))))
-#define __DEPUTY_COUNT(__n) __DEPUTY_BOUND(__this, __this + (__n))
-#define __DEPUTY_SINGLE(__n) __DEPUTY_COUNT(1)
-
-#define __DEPUTY_NONNULL(__n) __attribute__((nonnull))
-#define __DEPUTY_TRUSTEDBLOCK __blockattribute__((trusted))
+++ /dev/null
-#define __DEPUTY_BOUND(__lo,__hi)
-#define __DEPUTY_COUNT(__n)
-#define __DEPUTY_SINGLE(__n)
-
-#define __DEPUTY_NONNULL(__n)
-#define __DEPUTY_TRUSTEDBLOCK
+++ /dev/null
-struct @bound @deputy_scope() @macro("__DEPUTY_BOUND") { void *lo, *hi; };
-struct @count @deputy_scope() @macro("__DEPUTY_COUNT") { int n; };
-struct @single @deputy_scope() @macro("__DEPUTY_SINGLE") { };
-struct @nonnull @deputy_scope() @macro("__DEPUTY_NONNULL") { };
-
-#define __DEPUTY_TRUSTED __attribute__((trusted))
-#define __DEPUTY_COPYTYPE __attribute__((copytype))
-#define TC(__type,__expr) __DEPUTY_TRUSTED_CAST(__type,__expr)
-#define __DEPUTY_TRUSTED_CAST(__type,__expr) ((__type)((void * __DEPUTY_TRUSTED __DEPUTY_COPYTYPE)(__expr)))
+++ /dev/null
-struct @bound @deputy_scope() @macro("__DEPUTY_BOUND") { void *lo, *hi; };
-struct @count @deputy_scope() @macro("__DEPUTY_COUNT") { int n; };
-struct @single @deputy_scope() @macro("__DEPUTY_SINGLE") { };
-struct @nonnull @deputy_scope() @macro("__DEPUTY_NONNULL") { };
-
-#define __DEPUTY_TRUSTED
-#define __DEPUTY_COPYTYPE
-#define TC(__type,__expr) __DEPUTY_TRUSTED_CAST(__type,__expr)
-#define __DEPUTY_TRUSTED_CAST(__type,__expr) ((__type)(__expr))