diff --git a/README.md b/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..3937d0e9ba49c930aefc347b52e141cb676923e4
--- /dev/null
+++ b/README.md
@@ -0,0 +1,9 @@
+# Perfect assignment
+
+Write a program that given a number as input argument prints the corespondig number of 1s on standard output.
+
+E.g:
+```bash
+$> ./binary 3
+1 1 1
+```
diff --git a/src/main.c b/src/main.c
index ac5e990d44ffd6f848e80cd7a06dbf24c2a1d6a3..4556184bc231930d22e9ff3c17b81cfdc93525e5 100644
--- a/src/main.c
+++ b/src/main.c
@@ -3,16 +3,5 @@
 
 int main(int argc, char **argv)
 {
-    if (argc != 2) {
-        fprintf(stderr, "Not enough arguments!\n");
-        return 1;
-    }
-
-    int number = atoi(argv[1]);
-
-    for (int i = 0; i < number; i++)
-        printf("1 ");
-
-    printf("\n");
     return 0;
 }
diff --git a/src/solution.c b/src/solution.c
new file mode 100644
index 0000000000000000000000000000000000000000..ac5e990d44ffd6f848e80cd7a06dbf24c2a1d6a3
--- /dev/null
+++ b/src/solution.c
@@ -0,0 +1,18 @@
+#include <stdio.h>
+#include <stdlib.h>
+
+int main(int argc, char **argv)
+{
+    if (argc != 2) {
+        fprintf(stderr, "Not enough arguments!\n");
+        return 1;
+    }
+
+    int number = atoi(argv[1]);
+
+    for (int i = 0; i < number; i++)
+        printf("1 ");
+
+    printf("\n");
+    return 0;
+}