diff --git a/src/scheme/sys/mod.rs b/src/scheme/sys/mod.rs
index fadbd5babd27dd6abc8a166d4c6e58f9d08f8ac4..5c304131bd984fef425eaa4a1eecb749f9c80355 100644
--- a/src/scheme/sys/mod.rs
+++ b/src/scheme/sys/mod.rs
@@ -1,4 +1,3 @@
-use alloc::boxed::Box;
 use alloc::collections::BTreeMap;
 use alloc::vec::Vec;
 use core::str;
@@ -30,33 +29,33 @@ struct Handle {
     seek: usize
 }
 
-type SysFn = dyn Fn() -> Result<Vec<u8>> + Send + Sync;
+type SysFn = fn() -> Result<Vec<u8>>;
 
 /// System information scheme
 pub struct SysScheme {
     next_id: AtomicUsize,
-    files: BTreeMap<&'static str, Box<SysFn>>,
+    files: BTreeMap<&'static str, SysFn>,
     handles: RwLock<BTreeMap<usize, Handle>>
 }
 
 impl SysScheme {
     pub fn new() -> SysScheme {
-        let mut files: BTreeMap<&'static str, Box<SysFn>> = BTreeMap::new();
-
-        files.insert("block", Box::new(block::resource));
-        files.insert("context", Box::new(context::resource));
-        files.insert("cpu", Box::new(cpu::resource));
-        files.insert("exe", Box::new(exe::resource));
-        files.insert("iostat", Box::new(iostat::resource));
-        files.insert("irq", Box::new(irq::resource));
-        files.insert("log", Box::new(log::resource));
-        files.insert("scheme", Box::new(scheme::resource));
-        files.insert("scheme_num", Box::new(scheme_num::resource));
-        files.insert("syscall", Box::new(syscall::resource));
-        files.insert("uname", Box::new(uname::resource));
-        files.insert("env", Box::new(|| Ok(Vec::from(crate::init_env()))));
+        let mut files: BTreeMap<&'static str, SysFn> = BTreeMap::new();
+
+        files.insert("block", block::resource);
+        files.insert("context", context::resource);
+        files.insert("cpu", cpu::resource);
+        files.insert("exe", exe::resource);
+        files.insert("iostat", iostat::resource);
+        files.insert("irq", irq::resource);
+        files.insert("log", log::resource);
+        files.insert("scheme", scheme::resource);
+        files.insert("scheme_num", scheme_num::resource);
+        files.insert("syscall", syscall::resource);
+        files.insert("uname", uname::resource);
+        files.insert("env", || Ok(Vec::from(crate::init_env())));
         #[cfg(any(target_arch = "x86", target_arch = "x86_64"))]
-        files.insert("spurious_irq", Box::new(interrupt::irq::spurious_irq_resource));
+        files.insert("spurious_irq", interrupt::irq::spurious_irq_resource);
 
         SysScheme {
             next_id: AtomicUsize::new(0),