diff --git a/aztecs-gl.cabal b/aztecs-gl.cabal
--- a/aztecs-gl.cabal
+++ b/aztecs-gl.cabal
@@ -1,6 +1,6 @@
 cabal-version:   3.0
 name:            aztecs-gl
-version:         0.1.0
+version:         0.1.1
 license:         BSD-3-Clause
 license-file:    LICENSE
 maintainer:      matt@hunzinger.me
diff --git a/src/Aztecs/GL.hs b/src/Aztecs/GL.hs
--- a/src/Aztecs/GL.hs
+++ b/src/Aztecs/GL.hs
@@ -7,6 +7,9 @@
   ( -- * Colors
     Color (..),
 
+    -- * Meshes
+    Mesh (..),
+
     -- * Shapes
     Rectangle (..),
     Circle (..),
@@ -14,6 +17,8 @@
 
     -- * Rendering
     render,
+
+    -- * Transform
     module Aztecs.Transform,
   )
 where
@@ -188,6 +193,7 @@
   GL.bindBuffer GL.ArrayBuffer $= Nothing
   return $ Mesh vbo vertexCount mode
 
+-- | Render all @Mesh@ components that are descendants of @Window@s
 render :: (MonadIO m) => Access m ()
 render = do
   windows <- system . readQuery $ (,,) <$> query @_ @Window <*> query @_ @RawWindow <*> query @_ @Children
@@ -216,6 +222,11 @@
       let res = (,,) <$> meshRes <*> transformRes <*> colorRes
       case res of
         Just (mesh, trans, color) -> liftIO $ renderMesh (mesh, trans, color)
+        Nothing -> return ()
+
+      childrenRes <- lookup e
+      case childrenRes of
+        Just (Children cs) -> mapM_ go' cs
         Nothing -> return ()
 
 -- | Render a mesh with transform and color
