diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,5 +1,11 @@
 # Changelog for keid-resource-gltf
 
+## 0.1.0.2
+
+- Support Word8 index format.
+- Fix unsafe vector zipping.
+- Switch to gl-block Storable derivers.
+
 ## 0.1.0.1
 
 - Switch to block-derived Storable instance.
diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -1,1 +1,5 @@
 # Keid Engine - glTF resource
+
+Keid-specific utilities over [gltf-codec] to load and manipulate glTF scenes with Keid specifics.
+
+[gltf-codec]: https://hackage.haskell.org/package/gltf-codec
diff --git a/keid-resource-gltf.cabal b/keid-resource-gltf.cabal
--- a/keid-resource-gltf.cabal
+++ b/keid-resource-gltf.cabal
@@ -1,16 +1,16 @@
 cabal-version: 1.12
 
--- This file has been generated from package.yaml by hpack version 0.35.1.
+-- This file has been generated from package.yaml by hpack version 0.35.2.
 --
 -- see: https://github.com/sol/hpack
 
 name:           keid-resource-gltf
-version:        0.1.0.1
+version:        0.1.0.2
 synopsis:       GLTF loader for Keid engine.
 category:       Game Engine
 author:         IC Rainbow
 maintainer:     keid@aenor.ru
-copyright:      2021 IC Rainbow
+copyright:      2023 IC Rainbow
 license:        BSD3
 license-file:   LICENSE
 build-type:     Simple
@@ -34,67 +34,38 @@
   default-extensions:
       NoImplicitPrelude
       ApplicativeDo
-      BangPatterns
       BinaryLiterals
       BlockArguments
-      ConstrainedClassMethods
-      ConstraintKinds
       DataKinds
       DefaultSignatures
-      DeriveDataTypeable
-      DeriveFunctor
-      DeriveGeneric
-      DeriveLift
-      DeriveTraversable
       DerivingStrategies
       DerivingVia
       DuplicateRecordFields
-      EmptyCase
-      EmptyDataDeriving
-      ExistentialQuantification
-      ExplicitForAll
-      FlexibleContexts
-      FlexibleInstances
       FunctionalDependencies
-      GADTs
-      GeneralizedNewtypeDeriving
       HexFloatLiterals
       ImportQualifiedPost
-      InstanceSigs
-      KindSignatures
       LambdaCase
-      LiberalTypeSynonyms
-      MultiParamTypeClasses
       NamedFieldPuns
-      NamedWildCards
       NumDecimals
-      NumericUnderscores
+      OverloadedRecordDot
       OverloadedStrings
       PatternSynonyms
-      PostfixOperators
-      QuantifiedConstraints
       QuasiQuotes
-      RankNTypes
       RecordWildCards
-      ScopedTypeVariables
-      StandaloneDeriving
-      StandaloneKindSignatures
       StrictData
       TemplateHaskell
-      TupleSections
-      TypeApplications
       TypeFamilies
       TypeOperators
-      TypeSynonymInstances
-      UnicodeSyntax
       ViewPatterns
   ghc-options: -Wall -Wcompat -Widentities -Wincomplete-record-updates -Wincomplete-uni-patterns -Wpartial-fields -Wredundant-constraints
   build-depends:
       base >=4.7 && <5
     , bytestring
     , containers
-    , geomancy >=0.2.5.0
+    , geomancy >=0.2.6.0
+    , gl-block
     , gltf-codec
     , keid-core
     , rio >=0.1.12.0
-  default-language: Haskell2010
+    , vector
+  default-language: GHC2021
diff --git a/src/Resource/Gltf/Load.hs b/src/Resource/Gltf/Load.hs
--- a/src/Resource/Gltf/Load.hs
+++ b/src/Resource/Gltf/Load.hs
@@ -21,6 +21,7 @@
 import Codec.GlTF.Root qualified as Root
 import Codec.GlTF.URI qualified as URI
 import Data.ByteString.Unsafe qualified as ByteString
+import Data.Vector qualified as Vector
 import Foreign qualified
 import Geomancy (Vec2, Vec4, vec3, withVec4)
 import Geomancy.Vec3 qualified as Vec3
@@ -28,7 +29,6 @@
 import RIO.FilePath (takeDirectory, takeExtensions, (</>))
 import RIO.HashMap qualified as HashMap
 import RIO.List qualified as List
-import RIO.Vector qualified as Vector
 
 import Resource.Compressed.Zstd qualified as Zstd
 import Resource.Gltf.Model (MeshPrimitive, Stuff(..), VertexAttrs(..))
@@ -150,8 +150,9 @@
     Nothing ->
       throwString $ "No meshes in " <> fp
     Just meshes ->
-      for (Vector.zip (Vector.fromList [0 :: Int ..]) meshes) \(_meshIx, mesh) -> do
-        for (Vector.zip (Vector.fromList [0 :: Int ..]) (Mesh.primitives mesh)) \(_primIx, prim) -> do
+      -- XXX: the indices are provided to assist with debugging
+      Vector.iforM meshes \_meshIx mesh -> do
+        Vector.iforM (Mesh.primitives mesh) \_primIx prim -> do
           -- traceShowM
           --   ( "mesh"
           --   , _meshIx, Mesh.name mesh
@@ -168,17 +169,18 @@
             Nothing ->
               throwString "No indices for mesh primitive"
             Just aix -> do
-              -- accessBuffer @Word16 getAccessor getBufferView getBuffer Accessor.SCALAR Accessor.UNSIGNED_SHORT aix
-              indices <- catch
-                (fmap Right $ accessBuffer @Word32 getAccessor getBufferView getBuffer Accessor.SCALAR Accessor.UNSIGNED_INT aix)
-                (\UnexpectedComponentType{} ->
-                    fmap Left $ accessBuffer @Word16 getAccessor getBufferView getBuffer Accessor.SCALAR Accessor.UNSIGNED_SHORT aix
-                )
-              case indices of
-                Right word32s ->
-                  pure word32s
-                Left word16s ->
-                  pure $ fmap fromIntegral word16s
+              Accessor.Accessor{componentType} <- getAccessor aix
+              case componentType of
+                Accessor.UNSIGNED_INT ->
+                  accessBuffer @Word32 getAccessor getBufferView getBuffer Accessor.SCALAR Accessor.UNSIGNED_INT aix
+                Accessor.UNSIGNED_SHORT ->
+                  fmap (fmap fromIntegral) $
+                    accessBuffer @Word16 getAccessor getBufferView getBuffer Accessor.SCALAR Accessor.UNSIGNED_SHORT aix
+                Accessor.UNSIGNED_BYTE ->
+                  fmap (fmap fromIntegral) $
+                    accessBuffer @Word8 getAccessor getBufferView getBuffer Accessor.SCALAR Accessor.UNSIGNED_BYTE aix
+                huh ->
+                  throwM $ UnexpectedComponentType aix Accessor.UNSIGNED_INT huh
 
           (material, indices) <- case Mesh.material prim of
             Nothing ->
diff --git a/src/Resource/Gltf/Model.hs b/src/Resource/Gltf/Model.hs
--- a/src/Resource/Gltf/Model.hs
+++ b/src/Resource/Gltf/Model.hs
@@ -19,9 +19,9 @@
 import Codec.GlTF.Material qualified as GlTF (Material)
 import Data.Semigroup (Semigroup(..))
 import Geomancy (Vec2)
-import Geomancy.Gl.Block (Block)
-import Geomancy.Gl.Block qualified as Block
 import Geomancy.Vec3 qualified as Vec3
+import Graphics.Gl.Block (Block)
+import Graphics.Gl.Block qualified as Block
 import RIO.List qualified as List
 import RIO.Vector qualified as Vector
 
