diff --git a/examples/introducing-clay-video-demo/main.c b/examples/introducing-clay-video-demo/main.c
index 88a0c15..c8c3924 100644
--- a/examples/introducing-clay-video-demo/main.c
+++ b/examples/introducing-clay-video-demo/main.c
@@ -1,6 +1,7 @@
 #define CLAY_IMPLEMENTATION
 #include "../../clay.h"
-#include "../../renderers/raylib/clay_renderer_raylib.c"
+#define CLAY_RAYLIB_IMPLEMENTATION // This is different to the video, the raylib renderer is now in a header file
+#include "../../renderers/raylib/clay_renderer_raylib.h"
 
 const int FONT_ID_BODY_16 = 0;
 Clay_Color COLOR_WHITE = { 255, 255, 255, 255};
diff --git a/examples/raylib-sidebar-scrolling-container/main.c b/examples/raylib-sidebar-scrolling-container/main.c
index 5a39fc1..4b51324 100644
--- a/examples/raylib-sidebar-scrolling-container/main.c
+++ b/examples/raylib-sidebar-scrolling-container/main.c
@@ -1,6 +1,7 @@
 #define CLAY_IMPLEMENTATION
 #include "../../clay.h"
-#include "../../renderers/raylib/clay_renderer_raylib.c"
+#define CLAY_RAYLIB_IMPLEMENTATION
+#include "../../renderers/raylib/clay_renderer_raylib.h"
 
 const uint32_t FONT_ID_BODY_24 = 0;
 const uint32_t FONT_ID_BODY_16 = 1;
diff --git a/renderers/raylib/clay_renderer_raylib.c b/renderers/raylib/clay_renderer_raylib.h
similarity index 97%
rename from renderers/raylib/clay_renderer_raylib.c
rename to renderers/raylib/clay_renderer_raylib.h
index 0fe545a..e3058f0 100644
--- a/renderers/raylib/clay_renderer_raylib.c
+++ b/renderers/raylib/clay_renderer_raylib.h
@@ -1,3 +1,6 @@
+#ifndef CLAY_RENDERER_RAYLIB_H
+#define CLAY_RENDERER_RAYLIB_H
+
 #include "raylib.h"
 #include "raymath.h"
 #include "stdint.h"
@@ -14,8 +17,6 @@ typedef struct
     Font font;
 } Raylib_Font;
 
-Raylib_Font Raylib_fonts[10];
-Camera Raylib_camera;
 
 typedef enum
 {
@@ -38,6 +39,14 @@ typedef struct
     };
 } CustomLayoutElement;
 
+#ifdef CLAY_RAYLIB_IMPLEMENTATION
+#undef CLAY_RAYLIB_IMPLEMENTATION
+
+// Global state
+Raylib_Font Raylib_fonts[10];
+Camera Raylib_camera;
+uint32_t measureCalls = 0;
+
 // Get a ray trace from the screen position (i.e mouse) within a specific section of the screen
 Ray GetScreenToWorldPointWithZDistance(Vector2 position, Camera camera, int screenWidth, int screenHeight, float zDistance)
 {
@@ -87,8 +96,6 @@ Ray GetScreenToWorldPointWithZDistance(Vector2 position, Camera camera, int scre
     return ray;
 }
 
-uint32_t measureCalls = 0;
-
 static inline Clay_Dimensions Raylib_MeasureText(Clay_String *text, Clay_TextElementConfig *config) {
     measureCalls++;
     // Measure string size for Font
@@ -122,6 +129,7 @@ static inline Clay_Dimensions Raylib_MeasureText(Clay_String *text, Clay_TextEle
 }
 
 void Clay_Raylib_Initialize(int width, int height, const char *title, unsigned int flags) {
+    measureCalls = 0;
     SetConfigFlags(flags);
     InitWindow(width, height, title);
 //    EnableEventWaiting();
@@ -231,3 +239,6 @@ void Clay_Raylib_Render(Clay_RenderCommandArray renderCommands)
         }
     }
 }
+
+#endif // CLAY_RAYLIB_IMPLEMENTATION
+#endif // CLAY_RENDERER_RAYLIB_H