diff --git a/src/main.rs b/src/main.rs
index a8acd1225c010f121914c647b7dbcf42c7c5c917..fb69b900c5af42213b59420d242928a8fa44cfd0 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -1,5 +1,6 @@
 //#![feature(const_size_of)]
 #![feature(optin_builtin_traits)]
+#![feature(const_fn)]
 //use std::mem::{transmute, size_of};
 //use std::marker::Sized;
 
@@ -38,13 +39,15 @@ mod trusted {
     }
 
     impl<T> Sec<T> {
-        pub unsafe fn new(d: T) -> Self {
+        pub const unsafe fn new(d: T) -> Self {
             Sec { data: d }
         }
         pub unsafe fn get(&self) -> &T {
             &self.data
         }
     }
+    impl<T> !Send for Sec<T> {}
+    impl<T> !Sync for Sec<T> {}
 
     // safe API for operating on Sec<u32>
     pub fn sec_add_u32(s1: &Sec<u32>, s2: &Sec<u32>) -> Sec<u32> {
@@ -57,9 +60,9 @@ mod trusted {
         T: Sized,
         F: FnMut(&mut u8),
     {
-        let ptr: *mut u8 = s as *mut T as *mut u8;
+        let ptr = s as *mut T as *mut u8;
         for i in 0..size_of::<T>() {
-            println!("{} {}", i, unsafe { *ptr.offset(i as isize) } as u8);
+            //println!("{} {}", i, unsafe { *ptr.offset(i as isize) } as u8);
             f(unsafe { &mut *ptr.offset(i as isize) });
         }
     }
@@ -80,6 +83,10 @@ mod trusted {
             Enc { data: c }
         }
 
+        pub const unsafe fn new_(d: T) -> Self {
+            Enc { data: d }
+        }
+
         pub unsafe fn get_unsafe(&self) -> Sec<T> {
             let mut c = self.data.clone();
             cipher(&mut c, |i| { *i -= 1; });
@@ -102,6 +109,9 @@ fn main() {
     user1(&d, &e);
 }
 
+static mut S: Sec<u32> = unsafe { Sec::new(0u32) };
+static mut E: Enc<u32> = unsafe { Enc::new_(0u32) };
+
 // user code in `safe` Rust
 fn user1(d: &Sec<u32>, e: &Enc<u32>) {
     println!("user1 {:?}, {:?}", d, e);
@@ -109,6 +119,9 @@ fn user1(d: &Sec<u32>, e: &Enc<u32>) {
     user2(&sec_add_u32(d, &e.get(a)));
     user3(d, &e.get(a));
     user4(d, e, a);
+    user5(d, e);
+    //unsafe { S = *d }
+    unsafe { S = e.get(a) }
 }
 
 fn user2(d: &Sec<u32>) {
@@ -120,7 +133,13 @@ fn user3(d1: &Sec<u32>, d2: &Sec<u32>) {
 }
 
 fn user4(d: &Sec<u32>, e: &Enc<u32>, a: &Auth) {
-    println!("user3 {:?}", sec_add_u32(d, &e.get(a)));
+    println!("user4 {:?}", sec_add_u32(d, &e.get(a)));
+}
+
+
+fn user5(d: &Sec<u32>, e: &Enc<u32>) {
+    println!("user5 {:?}, {:?}", d, e);
+    //unsafe { S = *d }
 }
 
 /*