diff --git a/src/lisp/lib/std.c b/src/lisp/lib/std.c
index 9c1f3cb..03e17fc 100644
--- a/src/lisp/lib/std.c
+++ b/src/lisp/lib/std.c
@@ -1,48 +1,47 @@
 #include "std.h"
 #include <stdlib.h>
 
-value_t l_plus (value_t a, value_t b)
+value_t l_plus(value_t a, value_t b)
 {
-	if ( !integerp (a) || !integerp (b) )
+	if (!integerp(a) || !integerp(b))
 		return nil;
 
 	return (((a >> 2) + (b >> 2)) << 2) | INT_TAG;
 }
 
-value_t l_minus (value_t a, value_t b)
+value_t l_minus(value_t a, value_t b)
 {
-	if ( !integerp (a) || !integerp (b) )
+	if (!integerp(a) || !integerp(b))
 		return nil;
 
 	return (((a >> 2) - (b >> 2)) << 2) | INT_TAG;
 }
 
-value_t l_times (value_t a, value_t b)
+value_t l_times(value_t a, value_t b)
 {
-	if ( !integerp (a) || !integerp (b) )
+	if (!integerp(a) || !integerp(b))
 		return nil;
 
 	return (((a >> 2) * (b >> 2)) << 2) | INT_TAG;
 }
 
-value_t l_divide (value_t a, value_t b)
+value_t l_divide(value_t a, value_t b)
 {
-	if ( !integerp (a) || !integerp (b) )
+	if (!integerp(a) || !integerp(b))
 		return nil;
 
 	return (((a >> 2) / (b >> 2)) << 2) | INT_TAG;
 }
 
-value_t l_printval (value_t val)
+value_t l_printval(value_t val)
 {
-	printval (val, 0);
+	printval(val, 0);
 	return nil;
 }
 
-void add_function (struct environment *env, char *name, void *func, int nargs)
+void add_function(struct environment *env, char *name, void *func, int nargs)
 {
-	struct function *last,
-		*new = malloc (sizeof (struct function));
+	struct function *last, *new = malloc(sizeof(struct function));
 
 	last = env->first;
 	new->prev = last;
@@ -53,16 +52,16 @@
 	env->first = new;
 }
 
-void load_std (struct environment *env)
+void load_std(struct environment *env)
 {
-	add_function (env, "+", l_plus, 2);
-	add_function (env, "-", l_minus, 2);
-	add_function (env, "*", l_times, 2);
-	add_function (env, "/", l_divide, 2);
+	add_function(env, "+", l_plus, 2);
+	add_function(env, "-", l_minus, 2);
+	add_function(env, "*", l_times, 2);
+	add_function(env, "/", l_divide, 2);
 
-	add_function (env, "car", car, 1);
-	add_function (env, "cdr", cdr, 1);
-	add_function (env, "cons", cons, 2);
+	add_function(env, "car", car, 1);
+	add_function(env, "cdr", cdr, 1);
+	add_function(env, "cons", cons, 2);
 
-	add_function (env, "print", l_printval, 1);
+	add_function(env, "print", l_printval, 1);
 }
