diff --git a/adder/Cargo.lock b/adder/Cargo.lock
new file mode 100644
index 0000000000000000000000000000000000000000..b8db25afcccc1d20d190e0642554ded91370f20a
--- /dev/null
+++ b/adder/Cargo.lock
@@ -0,0 +1,4 @@
+[root]
+name = "adder"
+version = "0.1.0"
+
diff --git a/adder/Cargo.toml b/adder/Cargo.toml
new file mode 100644
index 0000000000000000000000000000000000000000..fb55deee10040b0aa8431df766ba4be73c3d6cee
--- /dev/null
+++ b/adder/Cargo.toml
@@ -0,0 +1,4 @@
+[package]
+name = "adder"
+version = "0.1.0"
+authors = ["Anders Nilsson <anders.nilsson@control.lth.se>"]
diff --git a/adder/src/lib.rs b/adder/src/lib.rs
new file mode 100644
index 0000000000000000000000000000000000000000..4013c1b5dbf969aed53d90c1948974067173c221
--- /dev/null
+++ b/adder/src/lib.rs
@@ -0,0 +1,34 @@
+//! The `adder` crate provides functions that add numbers to other numbers.
+//!
+//! # Examples
+//!
+//! ```
+//! assert_eq!(4, adder::add_two(2));
+//! ```
+
+/// This function adds two to its argument.
+///
+/// # Examples
+///
+/// ```
+/// use adder::add_two;
+///
+/// assert_eq!(4, add_two(2));
+/// ```
+
+
+pub fn add_two(a: i32) -> i32 {
+    a+2
+}
+    
+
+#[cfg(test)]
+mod tests {
+    use super::add_two;
+    
+    #[test]
+    fn it_works() {
+        assert_eq!(4,add_two(2));
+    }
+
+}
diff --git a/adder/tests/lib.rs b/adder/tests/lib.rs
new file mode 100644
index 0000000000000000000000000000000000000000..96d4840304d5817df091b7a34979e6b4c38f0b73
--- /dev/null
+++ b/adder/tests/lib.rs
@@ -0,0 +1,6 @@
+extern crate adder;
+
+#[test ]
+fn it_works() {
+    assert_eq!(4,adder::add_two(2));
+}