diff --git a/Makefile b/Makefile
index d6f8e8030f54a7d646d751e184dec6eb6abc7820..705eeab874a039f5e71935b6158660665488d4f5 100644
--- a/Makefile
+++ b/Makefile
@@ -27,20 +27,15 @@ MAKE    			:= /usr/bin/make
 LIBS 				:= -lbinary_c $(shell $(BINARY_C)/binary_c-config --libs)
 
 # Source files and cflags
-# C_SRC   			:= binary_c_python_api.c
 C_SRC 				:= $(SRC_DIR)/binary_c_python_api.c
 CFLAGS 				:= -fPIC $(shell $(BINARY_C)/binary_c-config --flags | sed s/-fvisibility=hidden// )
-# C_SRC_NEW			:= $(SRC_DIR)/binary_c_python_api.c
-# SRC = $(wildcard $(SRC_DIR)/binary_c_python_api.c)
 
 # Incdirs
 INCDIRS 			:= -I$(BINARY_C)/src/ -I$(BINARY_C)/src/API -I$(INC_DIR)/
 
 # Object files and flags
-# OBJECTS 			:= $(C_SRC:.c=.o)
 OBJECTS 			:= $(C_SRC:$(SRC_DIR)/%.c=$(OBJ_DIR)/%.o)
 OBJ_FLAGS 			:= -c
-# OBJ_NEW				:= $(C_SRC_NEW:$(SRC_DIR)/%.c=$(OBJ_DIR)/%.o)
 
 # Shared lib files and flags
 SO_NAME 			:= $(TARGET_LIB_DIR)/libbinary_c_api.so
@@ -52,22 +47,17 @@ PY_SETUP 			:= setup.py
 PY_OPTIONS 			:= build_ext --inplace
 
 all:
-# 	$(CC) -DBINARY_C=$(BINARY_C) $(CFLAGS) $(INCDIRS) $(C_SRC) -o $(OBJECTS) $(OBJ_FLAGS) $(LIBS) 
-# 	$(CC) -DBINARY_C=$(BINARY_C) $(SO_FLAGS) -o $(SO_NAME) $(OBJECTS)
-
 	$(CC) -DBINARY_C=$(BINARY_C) $(CFLAGS) $(INCDIRS) $(C_SRC) -o $(OBJECTS) $(OBJ_FLAGS) $(LIBS) 
 	$(CC) -DBINARY_C=$(BINARY_C) $(SO_FLAGS) -o $(SO_NAME) $(OBJECTS)
 # 	$(PY_EXEC) $(PY_SETUP) $(PY_OPTIONS) 
+
 test:	
-	@echo Objects: $(OBJECTS)
-	@echo Libs: $(LIBS)
+	@echo OBJECTS: $(OBJECTS)
+	@echo LIBS: $(LIBS)
 	@echo C_SRC: $(C_SRC)
 	@echo CFLAGS: $(CFLAGS)
 	@echo INCDIRS: $(INCDIRS)
-	@echo OBJS_NEW: $(OBJ_NEW)
-	@echo SRC_NEW: $(C_SRC_NEW)
-
 
 clean:
-	$(RM) obj/*.o *.so
+	$(RM) $(OBJ_DIR)/*.o $(TARGET_LIB_DIR)/*.so
 	$(RM) -r build/
\ No newline at end of file
diff --git a/binary_c_python_api.c b/binary_c_python_api.c
deleted file mode 100644
index 98aa26883644956eba1f5902b6c9e5d1a10091e8..0000000000000000000000000000000000000000
--- a/binary_c_python_api.c
+++ /dev/null
@@ -1,242 +0,0 @@
-#include "binary_c_python.h"
-#include <time.h>
-#include <sys/timeb.h>
-#include <stdarg.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-
-
-/*
- * apitest
- *
- * Short test programme to throw random binary systems at binary_c's
- * library via its API.
- *
- * Note that it looks more complicated than it is because I have included
- * code to capture binary_c's stdout stream and output it here.
- *
- * This code sends output to stderr : you should use apitest.sh to run it
- * and hence force output to your terminal's stdout.
- *
- * Output lines:
- *
- * APITEST ....  is information about what this code is doing.
- * STATUS  ....  is information about the binary system.
- * BINARY_C .... is output from binary_c (see iterate_logging.c etc.)
- *               which would have gone to stdout
- *
- * If you define the NO_OUTPUT macro, there will be no output except
- * the memory allocation and test system information. This is useful for speed tests,
- * but note that you may end up in a race condition where the pipe which replaces
- * stdout's buffer fills and hence the code stops.
- *
- * Note:
- * I have tested this with gcc 4.7.2 (Ubuntu 12.10) only.
- */
-
-// #define _CAPTURE
-#ifdef _CAPTURE
-static void show_stdout(void);
-static void capture_stdout(void);
-#endif
-
-/* global variables */
-int out_pipe[2];
-int stdoutwas;
-
-int run_binary(char * argstring,
-               char ** const buffer,
-               char ** const error_buffer,
-               size_t * const nbytes)
-{
-    /* memory for N binary systems */
-    struct libbinary_c_stardata_t *stardata;
-    struct libbinary_c_store_t * store = NULL;
-
-    /* make new stardata */
-    stardata = NULL;
-    binary_c_new_system(&stardata,
-                        NULL,
-                        NULL,
-                        &store,
-                        &argstring,
-                        -1);
-    
-    /* disable logging */
-    snprintf(stardata->preferences->log_filename,
-             STRING_LENGTH-1,
-             "%s",
-             "/dev/null");
-    snprintf(stardata->preferences->api_log_filename_prefix,
-             STRING_LENGTH-1,
-             "%s",
-             "/dev/null");
-    /* output to strings */
-    stardata->preferences->internal_buffering = INTERNAL_BUFFERING_STORE;
-    stardata->preferences->batchmode = BATCHMODE_LIBRARY;
-
-    /* do binary evolution */
-    binary_c_evolve_for_dt(stardata,
-                           stardata->model.max_evolution_time);
-        
-    /* get buffer pointer */
-    binary_c_buffer_info(stardata,buffer,nbytes);
-    
-    /* get error buffer pointer */
-    binary_c_error_buffer(stardata,error_buffer);
-    
-    /* set raw_buffer_size = -1 to prevent it being freed */
-    stardata->tmpstore->raw_buffer_size = -1;
-    
-    /* free stardata (except the buffer) */
-    binary_c_free_memory(&stardata,TRUE,TRUE,FALSE,FALSE);
-    binary_c_free_store_contents(store);
-        
-    return 0;
-}
-
-int run_binary_custom_logging(char * argstring,
-               long int func_memaddr,
-               char ** const buffer,
-               char ** const error_buffer,
-               size_t * const nbytes)
-{
-    /* memory for N binary systems */
-    struct libbinary_c_stardata_t *stardata;
-    struct libbinary_c_store_t * store = NULL;
-
-    /* make new stardata */
-    stardata = NULL;
-    binary_c_new_system(&stardata,
-                        NULL,
-                        NULL,
-                        &store,
-                        &argstring,
-                        -1);
-    
-    /* disable logging */
-    snprintf(stardata->preferences->log_filename,
-             STRING_LENGTH-1,
-             "%s",
-             "/dev/null");
-    snprintf(stardata->preferences->api_log_filename_prefix,
-             STRING_LENGTH-1,
-             "%s",
-             "/dev/null");
-    /* output to strings */
-    stardata->preferences->internal_buffering = INTERNAL_BUFFERING_STORE;
-    stardata->preferences->batchmode = BATCHMODE_LIBRARY;
-    stardata->preferences->custom_output_function = (void*)(struct stardata_t *)func_memaddr;
-
-    /* do binary evolution */
-    binary_c_evolve_for_dt(stardata,
-                           stardata->model.max_evolution_time);
-        
-    /* get buffer pointer */
-    binary_c_buffer_info(stardata,buffer,nbytes);
-    
-    /* get error buffer pointer */
-    binary_c_error_buffer(stardata,error_buffer);
-    
-    /* set raw_buffer_size = -1 to prevent it being freed */
-    stardata->tmpstore->raw_buffer_size = -1;
-    
-    /* free stardata (except the buffer) */
-    binary_c_free_memory(&stardata,TRUE,TRUE,FALSE,FALSE);
-    binary_c_free_store_contents(store);
-        
-    return 0;
-}
-
-int return_arglines(char ** const buffer,
-               char ** const error_buffer,
-               size_t * const nbytes)
-{
-    /* memory for N binary systems */
-    struct libbinary_c_stardata_t *stardata;
-    struct libbinary_c_store_t * store = NULL;
-
-    /* make new stardata */
-    stardata = NULL;
-    char * empty_str = "";
-    binary_c_new_system(&stardata,
-                        NULL,
-                        NULL,
-                        &store,
-                        &empty_str,
-                        -1);
-
-    /* disable logging */
-    snprintf(stardata->preferences->log_filename,
-             STRING_LENGTH-1,
-             "%s",
-             "/dev/null");
-    snprintf(stardata->preferences->api_log_filename_prefix,
-             STRING_LENGTH-1,
-             "%s",
-             "/dev/null");
-
-    /* output to strings */
-    stardata->preferences->internal_buffering = INTERNAL_BUFFERING_STORE;
-    stardata->preferences->batchmode = BATCHMODE_LIBRARY;
-
-    /* List available arguments */
-    binary_c_list_args(stardata);
-
-    /* get buffer pointer */
-    binary_c_buffer_info(stardata,buffer,nbytes);
-    
-    /* get error buffer pointer */
-    binary_c_error_buffer(stardata,error_buffer);
-    
-    /* set raw_buffer_size = -1 to prevent it being freed */
-    stardata->tmpstore->raw_buffer_size = -1;
-    
-    /* free stardata (except the buffer) */
-    binary_c_free_memory(&stardata,TRUE,TRUE,FALSE,FALSE);
-    binary_c_free_store_contents(store);
-
-    return 0;
-}
-
-int run_binary_with_logfile(char * argstring,
-               char ** const buffer,
-               char ** const error_buffer,
-               size_t * const nbytes)
-{
-    /* memory for N binary systems */
-    struct libbinary_c_stardata_t *stardata;
-    struct libbinary_c_store_t * store = NULL;
-
-    /* make new stardata */
-    stardata = NULL;
-    binary_c_new_system(&stardata,
-                        NULL,
-                        NULL,
-                        &store,
-                        &argstring,
-                        -1);
-
-    /* output to strings */
-    stardata->preferences->internal_buffering = INTERNAL_BUFFERING_STORE;
-    stardata->preferences->batchmode = BATCHMODE_LIBRARY;
-
-    /* do binary evolution */
-    binary_c_evolve_for_dt(stardata,
-                           stardata->model.max_evolution_time);
-        
-    /* get buffer pointer */
-    binary_c_buffer_info(stardata,buffer,nbytes);
-    
-    /* get error buffer pointer */
-    binary_c_error_buffer(stardata,error_buffer);
-    
-    /* set raw_buffer_size = -1 to prevent it being freed */
-    stardata->tmpstore->raw_buffer_size = -1;
-    
-    /* free stardata (except the buffer) */
-    binary_c_free_memory(&stardata,TRUE,TRUE,FALSE,FALSE);
-    binary_c_free_store_contents(store);
-    return 0;
-}
\ No newline at end of file
diff --git a/binary_c_python.c b/src/binary_c_python.c
similarity index 100%
rename from binary_c_python.c
rename to src/binary_c_python.c