diff --git a/src/meson.build b/src/meson.build
index ff21b77ad70d3062896db437180c9aae5e40f59f..830299c40ea93ba022ddcb42a7432ff0e491e8c3 100644
--- a/src/meson.build
+++ b/src/meson.build
@@ -21,10 +21,10 @@ executable('sizeof', 'sizeof.c')
 executable('snprintf', 'snprintf.c')
 executable('strtol', 'strtol.c')
 executable('taylor', 'taylor.c')
+executable('winter', 'winter.c')
 executable('world', 'world.c')
 
 subdir('sockets')
-subdir('winter')
 
 if openmp_dep.found()
     subdir('openmp')
diff --git a/src/winter/winter.c b/src/winter.c
similarity index 100%
rename from src/winter/winter.c
rename to src/winter.c
diff --git a/src/winter/add.c b/src/winter/add.c
deleted file mode 100644
index 3bebb8bcde3b609e4188a8d1d822996144f5e4ca..0000000000000000000000000000000000000000
--- a/src/winter/add.c
+++ /dev/null
@@ -1,26 +0,0 @@
-/* Adds up 2 integers, not the most exciting thing in the world */
-#include <stdio.h>
-
-int
-main (int argc, char **argv)
-{
-	int a, b;
-
-	if (argc != 3)
-	{
-		printf ("Please input an integer value: ");
-		scanf ("%d", &a);
-
-		printf ("Please input an integer value: ");
-		scanf ("%d", &b);
-	}
-	else
-	{
-		sscanf (argv[1], "%d", &a);
-		sscanf (argv[2], "%d", &b);
-	}
-
-	printf ("%d + %d = %d\n", a, b, a + b);
-	
-	return 0;
-}
diff --git a/src/winter/add2.c b/src/winter/add2.c
deleted file mode 100644
index 55e1935dc774e1eb7c36ee227ef8dc7b55900060..0000000000000000000000000000000000000000
--- a/src/winter/add2.c
+++ /dev/null
@@ -1,12 +0,0 @@
-#include <stdio.h>
-
-#include "utils.h"
-
-int
-main (int    argc,
-      char **argv)
-{
-    int *vals = get_ints (argc, argv, 2, "Please input an integer value");
-    printf ("%d + %d = %d\n", vals[0], vals[1], vals[0] + vals[1]);
-    return 0;
-}
diff --git a/src/winter/angle.c b/src/winter/angle.c
deleted file mode 100644
index f06b9687f04877cd8f3a50728d16ebe755109211..0000000000000000000000000000000000000000
--- a/src/winter/angle.c
+++ /dev/null
@@ -1,31 +0,0 @@
-#include <stdio.h>
-#include <tgmath.h>
-
-#define DEG_TO_RAD(x) ((x) * M_PI / 180.0)
-
-int
-main (int argc, char **argv)
-{
-	double angle, angle_rad;
-	double sin_a, cos_a, tan_a;
-
-	if (argc != 2)
-	{
-		printf ("Input the angle: ");
-		scanf ("%lf", &angle);
-	}
-	else
-		sscanf (argv[1], "%lf", &angle);
-
-	angle_rad = DEG_TO_RAD (angle);
-
-	sin_a = sin (angle_rad);
-	cos_a = cos (angle_rad);
-	tan_a = tan (angle_rad);
-
-	printf ("sin (%f) = %f\n", angle, sin_a);
-	printf ("cos (%f) = %f\n", angle, cos_a);
-	printf ("tan (%f) = %f\n", angle, tan_a);
-
-	return 0;
-}
diff --git a/src/winter/array/meson.build b/src/winter/array/meson.build
deleted file mode 100644
index d9e53c5117fd5102e7f6b486ea9204f5f0078bf0..0000000000000000000000000000000000000000
--- a/src/winter/array/meson.build
+++ /dev/null
@@ -1,5 +0,0 @@
-subdir('src')
-
-if glib_dep.found()
-    subdir('test')
-endif
diff --git a/src/winter/array/src/array.c b/src/winter/array/src/array.c
deleted file mode 100644
index ed4c91f7e357bd81bfb8153c090c315f456940a0..0000000000000000000000000000000000000000
--- a/src/winter/array/src/array.c
+++ /dev/null
@@ -1,311 +0,0 @@
-/* array.c
- *
- * Copyright 2018 Bruce Cowan <bruce@bcowan.me.uk>
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- */
-
-#include <errno.h>
-#include <math.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "array.h"
-#include "mem.h"
-
-#define MIN_SIZE 2
-
-struct _Array
-{
-    void **data;
-    size_t length;
-    size_t capacity;
-    FreeFunc free_func;
-    
-    int ref_count;
-};
-
-static void
-resize_array (Array *array,
-              size_t required)
-{
-    size_t size = MIN_SIZE;
-
-    while (size < required)
-    {
-        size = (size_t) ceil (size * 1.5);
-    }
-
-    array->data = check_realloc (array->data, sizeof (void *) * size);
-    array->capacity = size;
-}
-
-static bool
-index_in_array (const Array *array,
-                size_t       index)
-{
-    if (index < array->length)
-        return true;
-    else
-    {
-        errno = EINVAL;
-        return false;
-    }
-}
-
-static void
-maybe_shrink (Array *array)
-{
-    if (array->length <= (size_t) ceil (array->capacity * 0.3))
-        resize_array (array, array->length);
-}
-
-/**
- * array_new:
- * @func: (nullable): A #FreeFunc which is used to free deleted items
- *
- * Creates a new #Array.
- *
- * Returns: The new #Array, free with array_free()
- */
-Array *
-array_new (FreeFunc func)
-{
-    Array *array = check_malloc (sizeof (Array));
-
-    array->data = check_malloc (sizeof (void *) * MIN_SIZE);
-    array->length = 0;
-    array->capacity = MIN_SIZE;
-    array->free_func = func;
-    array->ref_count = 1;
-
-    return array;
-}
-
-/**
- * array_ref:
- * @array: The array to increase the reference count of
- *
- * Increase the reference account of the array.
- *
- * Returns: The array
- */
-Array *
-array_ref (Array *array)
-{
-    array->ref_count++;
-
-    return array;
-}
-
-/**
- * array_unref:
- * @array: The array to decrease the reference count of
- *
- * Decrease the reference account of the array. If it becomes 0, it will be
- * freed.
- */
-void
-array_unref (Array *array)
-{
-    array->ref_count--;
-
-    if (array->ref_count == 0)
-    {
-        if (array->free_func)
-        {
-            for (size_t i = 0; i < array->length; i++)
-                array->free_func (array->data[i]);
-        }
-
-        free (array->data);
-        free (array);
-    }
-}
-
-/**
- * array_add:
- * @array: An array
- * @val: The value to add to the array
- *
- * Adds a value to an array.
- */
-void
-array_add (Array      *array,
-           const void *val)
-{
-    if (array->length == array->capacity)
-        resize_array (array, array->length + 1);
-
-    array->data[array->length] = (void *) val;
-    array->length += 1;
-}
-
-/**
- * array_remove_fast:
- * @array: An array
- * @index: The index of the item to remove from @array
- *
- * Removes an item from an array. This function copies the last member of the
- * array to the location of the item to be removed, which means that ordering
- * is not preserved.
- *
- * Returns: %true if successful
- */
-bool
-array_remove_fast (Array *array,
-                   size_t index)
-{
-    if (!index_in_array (array, index))
-    {
-        perror ("array_remove_fast");
-        return false;
-    }
-
-    if (array->free_func)
-        array->free_func (array->data[index]);
-
-    void *last = array->data[array->length - 1];
-    array->data[index] = last;
-
-    array->length -= 1;
-    maybe_shrink (array);
-
-    return true;
-}
-
-/**
- * array_remove:
- * @array: An array
- * @index: The index of the item to remove from @array
- *
- * Removes an item from an array. This function moves the items following the
- * removed item down one space. This preserves the ordering of the items, but is
- * slower than array_remove_fast().
- *
- * Returns: %true if successful
- */
-bool
-array_remove (Array *array,
-              size_t index)
-{
-    if (!index_in_array (array, index))
-    {
-        perror ("array_remove");
-        return false;
-    }
-
-    if (array->free_func)
-        array->free_func (array->data[index]);
-
-    memmove (array->data + index,
-             array->data + index + 1,
-             sizeof (void *) * (array->length - index - 1));
-
-    array->length -= 1;
-    maybe_shrink (array);
-
-    return true;
-}
-
-/**
- * array_set:
- * @array: An array
- * @index: The index of the item to set a value for
- * @val: The value to set the item to
- *
- * Sets an element of @array to @val, using the @index.
- *
- * Returns: %true if successful
- */
-bool
-array_set (Array      *array,
-           size_t      index,
-           const void *val)
-{
-    if (!index_in_array (array, index))
-    {
-        perror ("array_set");
-        return false;
-    }
-
-    array->data[index] = (void *) val;
-    return true;
-}
-
-/**
- * array_get:
- * @array: An array
- * @index: The index of @array to get a value from
- *
- * Get a value of @array, using @index.
- *
- * Returns: (transfer none): The value at @index of @array
- */
-const void *
-array_get (const Array *array,
-           size_t       index)
-{
-    if (index_in_array (array, index))
-        return array->data[index];
-    else
-    {
-        perror ("array_get");
-        return NULL;
-    }
-}
-
-/**
- * array_get_length:
- * @array: An array
- *
- * Gets the number of elements in an array.
- *
- * Returns: The length of the array
- */
-size_t
-array_get_length (const Array *array)
-{
-    return array->length;
-}
-
-/**
- * array_get_capacity:
- * @array: An array
- *
- * Get the capacity (proportional to memory usage) of @array.
- *
- * Returns: The capacity, in items.
- */
-size_t
-array_get_capacity (const Array *array)
-{
-    return array->capacity;
-}
-
-/**
- * array_sort:
- * @array: An array
- * @func: A function which returns -1 for less than, 0 for equal, and 1 for more than
- *
- * Sorts the array
- */
-void
-array_sort (Array      *array,
-            CompareFunc func)
-{
-    qsort (*array->data, array->length, sizeof (void *), func);
-}
diff --git a/src/winter/array/src/array.h b/src/winter/array/src/array.h
deleted file mode 100644
index 44f0a7b2201f8fc50b2d4187fc2a16671c24338a..0000000000000000000000000000000000000000
--- a/src/winter/array/src/array.h
+++ /dev/null
@@ -1,54 +0,0 @@
-/* array.h
- *
- * Copyright 2018 Bruce Cowan <bruce@bcowan.me.uk>
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- */
-
-#pragma once
-
-#include <stdbool.h>
-#include <stddef.h>
-
-typedef struct _Array Array;
-
-typedef void   (*FreeFunc)    (void *element);
-typedef double (*ValueFunc)   (const void *element);
-typedef int    (*CompareFunc) (const void *a, const void *b);
-
-// Fundamental functions
-Array * array_new         (FreeFunc    func);
-Array * array_ref         (Array      *array);
-void    array_unref       (Array      *array);
-
-void    array_add         (Array      *array,
-                           const void *val);
-bool    array_remove_fast (Array      *array,
-                           size_t      index);
-bool    array_remove      (Array      *array,
-                           size_t      index);
-bool    array_set         (Array      *array,
-                           size_t      index,
-                           const void *val);
-
-// Getters    
-const void * array_get          (const Array *array,
-                                 size_t       index);
-size_t       array_get_length   (const Array *array);
-size_t       array_get_capacity (const Array *array);
-
-// Misc
-void array_sort (Array      *array,
-                 CompareFunc func);
diff --git a/src/winter/array/src/mem.c b/src/winter/array/src/mem.c
deleted file mode 100644
index 168c1e6404ecd5648286a622bc914061dac27688..0000000000000000000000000000000000000000
--- a/src/winter/array/src/mem.c
+++ /dev/null
@@ -1,43 +0,0 @@
-/* mem.c
- *
- * Copyright 2018 Bruce Cowan <bruce@bcowan.me.uk>
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- */
-
-#include "mem.h"
-
-#include <stdlib.h>
-
-void *
-check_malloc (size_t size)
-{
-    void *ptr = malloc (size);
-    if (!ptr)
-        exit (EXIT_FAILURE);
-
-    return ptr;
-}
-
-void *
-check_realloc (void   *ptr,
-               size_t  size)
-{
-    void *new = realloc (ptr, size);
-    if (!new)
-        exit (EXIT_FAILURE);
-
-    return new;
-}
diff --git a/src/winter/array/src/mem.h b/src/winter/array/src/mem.h
deleted file mode 100644
index c73b025d78218791712ee977a72dd154e3b2fd87..0000000000000000000000000000000000000000
--- a/src/winter/array/src/mem.h
+++ /dev/null
@@ -1,26 +0,0 @@
-/* mem.h
- *
- * Copyright 2018 Bruce Cowan <bruce@bcowan.me.uk>
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- */
-
-#pragma once
-
-#include <stddef.h>
-
-void * check_malloc  (size_t  size);
-void * check_realloc (void   *ptr,
-                      size_t  size);
diff --git a/src/winter/array/src/meson.build b/src/winter/array/src/meson.build
deleted file mode 100644
index ad7d9e309867ae22f79cd29f85c4f7204c065004..0000000000000000000000000000000000000000
--- a/src/winter/array/src/meson.build
+++ /dev/null
@@ -1,3 +0,0 @@
-src = files('array.c', 'mem.c')
-lib = shared_library('array', src, dependencies: libm)
-lib_inc = include_directories('.')
diff --git a/src/winter/array/test/average.c b/src/winter/array/test/average.c
deleted file mode 100644
index e81bb27664ea7d443c7a3199fe0da4e6157418eb..0000000000000000000000000000000000000000
--- a/src/winter/array/test/average.c
+++ /dev/null
@@ -1,110 +0,0 @@
-/* average.c
- *
- * Copyright 2018 Bruce Cowan <bruce@bcowan.me.uk>
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- */
-
-#include <stdlib.h>
-#include <math.h>
-
-#include <glib.h>
-
-#include <array.h>
-
-static gdouble
-get_total (const Array *array)
-{
-    double total = 0;
-    size_t length = array_get_length (array);
-
-    for (size_t i = 0; i < length; i++)
-        total += (double) GPOINTER_TO_INT (array_get (array, i));
-
-    return total;
-}
-
-static gdouble
-get_average (const Array *array)
-{
-    return get_total (array) / array_get_length (array);
-}
-
-static Array *
-create_array (size_t length)
-{
-    Array *array = array_new (NULL);
-
-    for (size_t i = 1; i < length; i++)
-        array_add (array, GINT_TO_POINTER (i));
-
-    return array;
-}
-
-static void
-expected_values (Array  *array,
-                 double *total,
-                 double *average)
-{
-    size_t n = array_get_length (array);
-    gdouble sum = (n * (n+1)) / 2;
-
-    if (total)
-        *total = sum;
-
-    if (average)
-        *average = sum / n;
-}
-
-static void
-test_total (void)
-{
-    Array *array = create_array (100);
-
-    gdouble expected_total;
-    gdouble total = get_total (array);
-    expected_values (array, &expected_total, NULL);
-
-    g_assert_cmpfloat (total, ==, expected_total);
-
-    array_unref (array);
-}
-
-static void
-test_average (void)
-{
-    Array *array = create_array (100);
-
-    gdouble expected_average;
-    gdouble average = get_average (array);
-    expected_values (array, NULL, &expected_average);
-
-    g_assert_cmpfloat (average, ==, expected_average);
-
-    array_unref (array);
-}
-
-int
-main (int    argc,
-      char **argv)
-{
-    g_test_init (&argc, &argv, NULL);
-
-    g_test_add_func ("/array/total", test_total);
-    g_test_add_func ("/array/average", test_average);
-
-    return g_test_run ();
-}
-
diff --git a/src/winter/array/test/basic.c b/src/winter/array/test/basic.c
deleted file mode 100644
index aede24f9a357d8786f0584c8919f2beeb7f0195c..0000000000000000000000000000000000000000
--- a/src/winter/array/test/basic.c
+++ /dev/null
@@ -1,64 +0,0 @@
-/* basic.c
- *
- * Copyright 2018 Bruce Cowan <bruce@bcowan.me.uk>
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- */
-
-#include <glib.h>
-
-#include "array.h"
-
-#define LENGTH 100
-
-static Array *
-create_array (size_t length)
-{
-    Array *array = array_new (g_free);
-
-    for (size_t i = 0; i < length; i++)
-    {
-        gchar *str = g_strdup_printf ("String #%zu", i);
-        array_add (array, str);
-    }
-
-    return array;
-}
-
-static void
-test_get (void)
-{
-    Array *array = create_array (LENGTH);
-
-    for (size_t i = 0; i < LENGTH; i++)
-    {
-        const gchar *element = (const gchar *) array_get (array, i);
-        g_autofree gchar *compare = g_strdup_printf ("String #%zu", i);
-        g_assert_cmpstr (element, ==, compare);
-    }
-
-    array_unref (array);
-}
-
-int
-main (int    argc,
-      char **argv)
-{
-    g_test_init (&argc, &argv, NULL);
-
-    g_test_add_func ("/array/get", test_get);
-
-    return g_test_run ();
-}
diff --git a/src/winter/array/test/empty.c b/src/winter/array/test/empty.c
deleted file mode 100644
index d4d590a9ac5287b1c247458424f81060e7089a2c..0000000000000000000000000000000000000000
--- a/src/winter/array/test/empty.c
+++ /dev/null
@@ -1,92 +0,0 @@
-/* empty.c
- *
- * Copyright 2018 Bruce Cowan <bruce@bcowan.me.uk>
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- */
-
-#include <glib.h>
-
-#include "array.h"
-
-static void
-test_length (void)
-{
-    Array *array = array_new (NULL);
-
-    size_t length = array_get_length (array);
-    g_assert_cmpint (length, ==, 0);
-
-    array_unref (array);
-}
-
-static void
-test_remove_fast (void)
-{
-    Array *array = array_new (NULL);
-
-    gboolean success = array_remove_fast (array, 1);
-    g_assert_false (success);
-
-    array_unref (array);
-}
-
-static void
-test_remove (void)
-{
-    Array *array = array_new (NULL);
-
-    gboolean success = array_remove (array, 1);
-    g_assert_false (success);
-
-    array_unref (array);
-}
-
-static void
-test_get (void)
-{
-    Array *array = array_new (NULL);
-
-    const void *element = array_get (array, 1);
-    g_assert_null (element);
-
-    array_unref (array);
-}
-
-static void
-test_set (void)
-{
-    Array *array = array_new (NULL);
-
-    gboolean success = array_set (array, 1, NULL);
-    g_assert_false (success);
-
-    array_unref (array);
-}
-
-int
-main (int    argc,
-      char **argv)
-{
-    g_test_init (&argc, &argv, NULL);
-
-    g_test_add_func ("/array/length", test_length);
-    g_test_add_func ("/array/remove_fast", test_remove_fast);
-    g_test_add_func ("/array/remove", test_remove);
-    g_test_add_func ("/array/get", test_get);
-    g_test_add_func ("/array/set", test_set);
-
-    return g_test_run ();
-}
diff --git a/src/winter/array/test/meson.build b/src/winter/array/test/meson.build
deleted file mode 100644
index c9fd3b9c455cda3959370552abfb2c61d13c5873..0000000000000000000000000000000000000000
--- a/src/winter/array/test/meson.build
+++ /dev/null
@@ -1,21 +0,0 @@
-avg = executable('average',
-                 'average.c',
-                 link_with: lib,
-                 include_directories: lib_inc,
-                 dependencies: [glib_dep])
-
-basic = executable('basic',
-                   'basic.c',
-                   link_with: lib,
-                   include_directories: lib_inc,
-                   dependencies: [glib_dep])
-
-empty = executable('empty',
-                   'empty.c',
-                   link_with: lib,
-                   include_directories: lib_inc,
-                   dependencies: [glib_dep])
-
-test('average', avg)
-test('basic', basic)
-test('empty', empty)
diff --git a/src/winter/binary.c b/src/winter/binary.c
deleted file mode 100644
index d3d98627644032b4063db1a4a4e6f92cecbc68b8..0000000000000000000000000000000000000000
--- a/src/winter/binary.c
+++ /dev/null
@@ -1,60 +0,0 @@
-#include <stdio.h>
-
-static int list[] = { 8, 11, 17, 22, 29, 38, 51, 58, 65, 67, 74, 81, 87, 90, 96, 97 };
-
-#define N_ELEMENTS(arr) (sizeof(arr) / sizeof(arr[0]))
-
-static void
-binary_search (int key)
-{
-	int passes = 0;
-	int *low = &list[0];
-	int *high = &list[N_ELEMENTS (list) - 1];
-	int *mid;
-
-	printf ("key = %d\n", key);
-
-	while (low <= high)
-	{
-		passes += 1;
-		printf ("\n----------Pass #%d----------\n", passes);
-
-		mid = low + (high - low) / 2;
-		printf ("low, mid, high = %d, %d, %d\n", *low, *mid, *high);
-
-		if (key < *mid)
-		{
-			high = mid - 1;
-			printf ("key < mid\n");
-		}
-		else if (key > *mid)
-		{
-			low = mid + 1;
-			printf ("key > mid\n");
-		}
-		else
-		{
-			printf ("key = %d\n", *mid);
-			printf ("%d passes\n", passes);
-			break;
-		}
-	}
-}
-
-int
-main (int argc, char **argv)
-{
-	int key;
-
-	if (argc != 2)
-	{
-		printf ("What is the number to search for? ");
-		scanf ("%d", &key);
-	}
-	else
-		sscanf (argv[1], "%d", &key);
-
-	binary_search (key);
-
-	return 0;
-}
diff --git a/src/winter/complex.c b/src/winter/complex.c
deleted file mode 100644
index 8582c07f2b8bc4853258e2d85ed1ae015c9adaa4..0000000000000000000000000000000000000000
--- a/src/winter/complex.c
+++ /dev/null
@@ -1,21 +0,0 @@
-#include <stdio.h>
-#include <tgmath.h>
-
-int
-main (void)
-{
-    double complex z1 = I*I;
-    printf("j * j = %.1f + j%.1f\n", creal (z1), cimag (z1));
-    
-    double complex z2 = pow (I, 2);
-    printf("j^2 = %.1f + j%.1f\n", creal (z2), cimag (z2));
-    
-    double complex z3 = exp (I * M_PI);
-    printf("exp(j * pi) = %.1f + j%.1f\n", creal (z3), cimag (z3));
-    
-    double complex z4 = 1 + 2*I;
-    double complex z5 = 1 - 2*I;
-    printf ("(1+j2)(1-j2) = %.1f + j%.1f\n", creal (z4*z5), cimag (z4*z5));
-
-    return 0;
-}
diff --git a/src/winter/einstein.c b/src/winter/einstein.c
deleted file mode 100644
index 6f4dad4f9f04b10a60733d137e656e4bb54bed0e..0000000000000000000000000000000000000000
--- a/src/winter/einstein.c
+++ /dev/null
@@ -1,30 +0,0 @@
-#include <stdio.h>
-#include <stdlib.h>
-
-#define C 299792458
-#define C2 (C)*(C)
-
-int
-main (int argc, char **argv)
-{
-	double m;
-
-	if (argc != 2)
-	{
-		printf ("Input the mass in kg: ");
-		scanf ("%lf", &m);
-	}
-	else
-	{
-		if (sscanf (argv[1], "%lf", &m) != 1)
-		{
-  			fprintf (stderr, "Couldn't parse number\n");
-            return EXIT_FAILURE;
-		}
-	}
-
-	double e = m * C2;
-	printf ("E = %#.3G J\n", e);
-
-	return 0;
-}
diff --git a/src/winter/fgets.c b/src/winter/fgets.c
deleted file mode 100644
index a60cab34257247b3d3cbdf195f69f3580bdecb69..0000000000000000000000000000000000000000
--- a/src/winter/fgets.c
+++ /dev/null
@@ -1,17 +0,0 @@
-#include <stdio.h>
-
-int
-main (void)
-{
-    char array[80];
-
-    printf ("Enter string for fgets()\n");
-    fgets (array, sizeof(array), stdin);
-    printf ("fgets returned: %s\n", array);
-
-    printf ("Enter string for scanf()\n");
-    scanf ("%80[^\n]", array);
-    printf ("scanf() returned: %s\n", array);
-
-    return 0;
-}
diff --git a/src/winter/fib.c b/src/winter/fib.c
deleted file mode 100644
index 61b078ee5b39d22f88748d9ddcb8eb791025f701..0000000000000000000000000000000000000000
--- a/src/winter/fib.c
+++ /dev/null
@@ -1,24 +0,0 @@
-#include <inttypes.h>
-#include <stdio.h>
-
-#define N 45
-
-static uint32_t
-fib (int n)
-{
-    if (n < 2)
-        return 1;
-
-    return fib (n - 2) + fib (n - 1);
-}
-
-int
-main (void)
-{
-    for (int i = 0; i < N; i++)
-    {
-        printf ("fib(%2d) = %" PRIu32 "\n", i, fib (i));
-    }
-
-    return 0;
-}
diff --git a/src/winter/fixed-sizeof.c b/src/winter/fixed-sizeof.c
deleted file mode 100644
index a0d00728b96ba49ba616988ab6705bcbd4705ab3..0000000000000000000000000000000000000000
--- a/src/winter/fixed-sizeof.c
+++ /dev/null
@@ -1,23 +0,0 @@
-#include <stdio.h>
-#include <stdint.h>
-
-int
-main (void)
-{
-    printf ("int8_t is %zu bytes\n", sizeof (int8_t));
-    printf ("int16_t is %zu bytes\n", sizeof (int16_t));
-    printf ("int32_t is %zu bytes\n", sizeof (int32_t));
-    printf ("int64_t is %zu bytes\n", sizeof (int64_t));
-
-    printf ("int_fast8_t is %zu bytes\n", sizeof (int_fast8_t));
-    printf ("int_fast16_t is %zu bytes\n", sizeof (int_fast16_t));
-    printf ("int_fast32_t is %zu bytes\n", sizeof (int_fast32_t));
-    printf ("int_fast64_t is %zu bytes\n", sizeof (int_fast64_t));
-
-    printf ("int_least8_t is %zu bytes\n", sizeof (int_least8_t));
-    printf ("int_least16_t is %zu bytes\n", sizeof (int_least16_t));
-    printf ("int_least32_t is %zu bytes\n", sizeof (int_least32_t));
-    printf ("int_least64_t is %zu bytes\n", sizeof (int_least64_t));
-
-    return 0;
-}
diff --git a/src/winter/gcd.c b/src/winter/gcd.c
deleted file mode 100644
index c30bed3bbe98a5964b2ae9c3ad6ae3b9554168e4..0000000000000000000000000000000000000000
--- a/src/winter/gcd.c
+++ /dev/null
@@ -1,43 +0,0 @@
-#include <stdio.h>
-#include <stdlib.h>
-
-static int
-gcd (int a, int b)
-{
-	static int pass = 0;
-	++pass;
-
-	printf ("\n---Pass #%d---\n", pass);
-	printf ("a = %d, b = %d\n", a, b);
-
-	if (b == 0)
-		return a;
-	else
-		return gcd (b, a % b);
-}
-
-int
-main (int argc, char **argv)
-{
-	int a, b, solution;
-
-	if (argc != 3)
-	{
-		printf ("Input the first number ");
-		scanf ("%d", &a);
-		printf ("Input the second number ");
-		scanf ("%d", &b);
-	}
-	else
-	{
-		a = strtol (argv[1], NULL, 0);
-		b = strtol (argv[2], NULL, 0);
-	}
-
-	solution = gcd (a, b);
-
-	printf ("The GCD of (%d, %d) is %d\n", a, b, solution);
-	printf ("For example, it could be (%d, %d)\n", a / solution, b / solution);
-
-	return 0;
-}
diff --git a/src/winter/getchar.c b/src/winter/getchar.c
deleted file mode 100644
index 86e49d9a064fd69fb33792ee2cfa1b03487440d0..0000000000000000000000000000000000000000
--- a/src/winter/getchar.c
+++ /dev/null
@@ -1,27 +0,0 @@
-#include <inttypes.h>
-#include <stdint.h>
-#include <stdio.h>
-
-#define LEN_DIGITS 18 // Safe digits of INT64_MAX
-
-int
-main (void)
-{
-    int64_t value = 0;
-
-    printf ("Put the number in: ");
-
-    for (int i = 0; i < LEN_DIGITS; i++)
-    {
-        int ch;
-        if ((ch = getchar ()) == '\n')
-            break;
-
-        int digit = ch - '0';
-        value = 10 * value + digit;
-    }
-
-    printf ("Value is %" PRId64 "\n", value);
-
-    return 0;
-}
diff --git a/src/winter/hashtable/hashtable.c b/src/winter/hashtable/hashtable.c
deleted file mode 100644
index f5297547608b69a0d80ac40623df9d5be9c70e89..0000000000000000000000000000000000000000
--- a/src/winter/hashtable/hashtable.c
+++ /dev/null
@@ -1,95 +0,0 @@
-#include "hashtable.h"
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-/**
- * HashTable:
- *
- * The #HashTable struct is an opaque data structure to represent a
- * Hash Table. It should only be accessed via the following functions.
- */
-struct _HashTable
-{
-	SList **array;
-	size_t  size;
-};
-
-/**
- * hash_table_new:
- * @size: Number of buckets to use.
- *
- * Creates a new #HashTable.
- */
-HashTable *
-hash_table_new (size_t size)
-{
-	HashTable *new = malloc (sizeof (HashTable));
-	new->array = calloc (size, sizeof (SList *));
-	new->size = size;
-
-	return new;
-}
-
-/**
- * strhash:
- * @string: the string
- *
- * Converts a string into a hash value.
- *
- * Returns: the hash
- */
-static unsigned
-strhash (const char *string)
-{
-	unsigned h = 5381;
-	char c;
-
-	while ((c = *string++))
-		h = (h << 5) + h + c;
-
-	return h;
-}
-
-/**
- * hash_table_insert:
- * @table: a #HashTable.
- * @key: the key to insert.
- * @value: the value to associate with the key.
- *
- * Inserts a new key and value into a #HashTable.
- *
- * Duplicates are ignored, and @key and @value are copied.
- */
-void
-hash_table_insert (HashTable  *table,
-                   const char *key,
-                   const char *value)
-{
-	unsigned index = strhash (key) % table->size;
-
-	SList *list = slist_prepend (table->array[index], key, value);
-	table->array[index] = list;
-}
-
-/**
- * hash_table_print_all:
- * @table: a #HashTable.
- *
- * Prints out the contents of the #HashTable, one key-value pair per line,
- * in the format "key=value".
- */
-void
-hash_table_print_all (HashTable *table)
-{
-	for (size_t i = 0; i < table->size; i++)
-	{
-		SList *bucket = table->array[i];
-		if (bucket == NULL)
-			continue;
-
-		for (SList *list = bucket; list; list = list->next)
-			printf ("%s:%s\n", list->key, list->value);
-	}
-}
diff --git a/src/winter/hashtable/hashtable.h b/src/winter/hashtable/hashtable.h
deleted file mode 100644
index 03d02f480f65d28130979fa680faeb7eaee4e50c..0000000000000000000000000000000000000000
--- a/src/winter/hashtable/hashtable.h
+++ /dev/null
@@ -1,13 +0,0 @@
-#pragma once
-
-#include <stddef.h>
-
-#include "slist.h"
-
-typedef struct _HashTable HashTable;
-
-HashTable * hash_table_new       (size_t      size);
-void        hash_table_insert    (HashTable  *table,
-                                  const char *key,
-                                  const char *value);
-void        hash_table_print_all (HashTable  *table);
diff --git a/src/winter/hashtable/meson.build b/src/winter/hashtable/meson.build
deleted file mode 100644
index 69d938512cc41b5f0ca165076eb324d021eb9f7a..0000000000000000000000000000000000000000
--- a/src/winter/hashtable/meson.build
+++ /dev/null
@@ -1,5 +0,0 @@
-sources = files('hashtable.c',
-                'slist.c',
-                'test.c')
-
-executable('hash', sources)
diff --git a/src/winter/hashtable/slist.c b/src/winter/hashtable/slist.c
deleted file mode 100644
index 6b4bd0baab691bbae1b0d3ed92cac52ec77b64f2..0000000000000000000000000000000000000000
--- a/src/winter/hashtable/slist.c
+++ /dev/null
@@ -1,19 +0,0 @@
-#include "slist.h"
-
-#include <stdlib.h>
-#include <string.h>
-
-SList *
-slist_prepend (SList      *list,
-               const char *key,
-               const char *value)
-{
-	SList *new;
-
-	new = malloc (sizeof (SList));
-	new->key = strdup (key);
-	new->value = strdup (value);
-	new->next = list;
-
-	return new;
-}
diff --git a/src/winter/hashtable/slist.h b/src/winter/hashtable/slist.h
deleted file mode 100644
index f1bc6a3c83c2d153b0eb614f3013143d5a48239a..0000000000000000000000000000000000000000
--- a/src/winter/hashtable/slist.h
+++ /dev/null
@@ -1,13 +0,0 @@
-#pragma once
-
-typedef struct _SList SList;
-struct _SList
-{
-	char  *key;
-	char  *value;
-	SList *next;
-};
-
-SList * slist_prepend (SList      *list,
-                       const char *key,
-                       const char *value);
diff --git a/src/winter/hashtable/test.c b/src/winter/hashtable/test.c
deleted file mode 100644
index 0ac02e708323008f3e6b30ba678551580a466ddb..0000000000000000000000000000000000000000
--- a/src/winter/hashtable/test.c
+++ /dev/null
@@ -1,33 +0,0 @@
-#include "hashtable.h"
-
-#include <stdio.h>
-
-static void
-add_data (HashTable *table)
-{
-	char key[20];
-	char value[20];
-
-	printf ("Input the key ");
-	scanf ("%s", key);
-	printf ("Input the value ");
-	scanf ("%s", value);
-
-	hash_table_insert (table, key, value);
-}
-
-int
-main (void)
-{
-	HashTable *table;
-
-	table = hash_table_new (16);
-
-	while (1)
-	{
-		add_data (table);
-		hash_table_print_all (table);
-	}
-
-	return 0;
-}
diff --git a/src/winter/kepler.c b/src/winter/kepler.c
deleted file mode 100644
index 7da4f95d518c0e30a2b457a4ba18b88aae53cbca..0000000000000000000000000000000000000000
--- a/src/winter/kepler.c
+++ /dev/null
@@ -1,53 +0,0 @@
-#include <stdio.h>
-#include <stdlib.h>
-#include <tgmath.h>
-
-#define ACC 1e-9
-
-static double
-solve_keplers_equation (double m, double ecc)
-{
-    static int i = 1;
-    double e = m; // Initial guess
-
-    while (1)
-    {
-        printf ("---Iteration #%d---\n", i);
-
-        double delta = e - ecc * sin (e) - m;
-        printf ("E = %f, delta = %g\n", e, delta);
-    
-        if (fabs (delta) <= ACC)
-            return e;
-
-        e -= delta / (1 - ecc * cos (e));
-        i++;
-    }
-}
-
-int
-main (int argc, char **argv)
-{
-    double m;
-    double ecc;
-
-    if (argc != 3)
-    {
-        printf ("Input M (degrees) ");
-        scanf ("%lf", &m);
-        printf ("Input e ");
-        scanf ("%lf", &ecc);
-    }
-    else
-    {
-        sscanf (argv[1], "%lf", &m);
-        sscanf (argv[2], "%lf", &ecc);
-    }
-
-    m *= (M_PI / 180.0);    // Convert m into radians
-    double e = solve_keplers_equation (m, ecc);
-
-    printf ("\nResult is E = %.17g rad\n", e);
-    
-    return 0;
-}
diff --git a/src/winter/lib/meson.build b/src/winter/lib/meson.build
deleted file mode 100644
index 95c33f8ff266eb21741bdfaaad64853c5587deab..0000000000000000000000000000000000000000
--- a/src/winter/lib/meson.build
+++ /dev/null
@@ -1 +0,0 @@
-lib_utils = library('utils', 'utils.c')
diff --git a/src/winter/lib/utils.c b/src/winter/lib/utils.c
deleted file mode 100644
index 4ca6fa4c1d3d21b6dee922fb7ef3febd33006cd3..0000000000000000000000000000000000000000
--- a/src/winter/lib/utils.c
+++ /dev/null
@@ -1,27 +0,0 @@
-#include <stdio.h>
-#include <stdlib.h>
-
-int *
-get_ints (int         argc,
-          char      **argv,
-          int         n,
-          const char *prompt)
-{
-    int *ret = malloc (sizeof (int) * n);
-
-    if (argc != (n + 1))
-    {
-        for (int i = 0; i < n; i++)
-        {
-            printf ("%s: ", prompt);
-            scanf ("%d", &ret[i]);
-        }
-    }
-    else
-    {
-        for (int i = 0; i < n; i++)
-            sscanf (argv[i + 1], "%d", &ret[i]);
-    }
-    
-    return ret;
-}
diff --git a/src/winter/lib/utils.h b/src/winter/lib/utils.h
deleted file mode 100644
index 4a21c4b22c1808873954b15dc01e1c88111e18f8..0000000000000000000000000000000000000000
--- a/src/winter/lib/utils.h
+++ /dev/null
@@ -1,7 +0,0 @@
-#pragma once
-
-int *
-get_ints (int         argc,
-          char      **argv,
-          int         n,
-          const char *prompt);
diff --git a/src/winter/list/meson.build b/src/winter/list/meson.build
deleted file mode 100644
index 2ae653a61fa19ebaef35478b05d69200e6213a43..0000000000000000000000000000000000000000
--- a/src/winter/list/meson.build
+++ /dev/null
@@ -1,3 +0,0 @@
-sources = files('slist.c', 'test.c')
-
-executable('slist', sources)
diff --git a/src/winter/list/slist.c b/src/winter/list/slist.c
deleted file mode 100644
index 2bcbef42dd5325ee2f680addf03d1f7088052ad5..0000000000000000000000000000000000000000
--- a/src/winter/list/slist.c
+++ /dev/null
@@ -1,23 +0,0 @@
-#include "slist.h"
-
-#include <stdlib.h>
-#include <string.h>
-
-SList *
-slist_prepend (SList *list,
-               void  *data)
-{
-	SList *new = malloc (sizeof (SList));
-	new->data = data;
-	new->next = list;
-
-	return new;
-}
-
-void
-slist_free_all (SList    *list,
-                FreeFunc  func)
-{
-    for (SList *l = list; l; l = l->next)
-        func (l);
-}
diff --git a/src/winter/list/slist.h b/src/winter/list/slist.h
deleted file mode 100644
index ae55f139c338c7d155ae6a6e65cd1e998e40e0b6..0000000000000000000000000000000000000000
--- a/src/winter/list/slist.h
+++ /dev/null
@@ -1,16 +0,0 @@
-#pragma once
-
-typedef void (*FreeFunc) (void *value);
-
-typedef struct _SList SList;
-struct _SList
-{
-	void  *data;
-	SList *next;
-};
-
-SList * slist_prepend (SList *list,
-                       void  *data);
-
-void    slist_free_all (SList   *list,
-                        FreeFunc func);
diff --git a/src/winter/list/test.c b/src/winter/list/test.c
deleted file mode 100644
index 98aad53a2bb61a3600447a0e864dcb8ba38b918e..0000000000000000000000000000000000000000
--- a/src/winter/list/test.c
+++ /dev/null
@@ -1,44 +0,0 @@
-#include "slist.h"
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-static SList *
-add_data (SList *list)
-{
-    char buffer[128];
-
-    printf ("Input the data ");
-    scanf ("%s", buffer);
-
-    char *str = strdup (buffer);
-    return slist_prepend (list, str);
-}
-
-static void
-print_data (SList *list)
-{
-    SList *l;
-
-    for (l = list; l != NULL; l = l->next)
-    {
-        printf ("%s\n", (char *) l->data);
-    }
-}
-
-int
-main (void)
-{
-    SList *list = NULL;
-
-    while (1)
-    {
-        list = add_data (list);
-        print_data (list);
-    }
-
-    slist_free_all (list, free);
-
-    return 0;
-}
diff --git a/src/winter/meson.build b/src/winter/meson.build
deleted file mode 100644
index c56c3cd02ab4ba0d177bed2535214f8f472aefa4..0000000000000000000000000000000000000000
--- a/src/winter/meson.build
+++ /dev/null
@@ -1 +0,0 @@
-executable('winter', 'winter.c')