diff --git a/hs-opentelemetry-exporter-otlp.cabal b/hs-opentelemetry-exporter-otlp.cabal
--- a/hs-opentelemetry-exporter-otlp.cabal
+++ b/hs-opentelemetry-exporter-otlp.cabal
@@ -5,7 +5,7 @@
 -- see: https://github.com/sol/hpack
 
 name:           hs-opentelemetry-exporter-otlp
-version:        0.0.1.1
+version:        0.0.1.3
 synopsis:       OpenTelemetry exporter supporting the standard OTLP protocol
 description:    Please see the README on GitHub at <https://github.com/iand675/hs-opentelemetry/tree/main/exporters/otlp#readme>
 category:       OpenTelemetry, Telemetry, Monitoring, Observability, Metrics
@@ -38,7 +38,7 @@
     , bytestring
     , case-insensitive
     , clock
-    , hs-opentelemetry-api ==0.0.2.*
+    , hs-opentelemetry-api ==0.0.3.*
     , hs-opentelemetry-otlp ==0.0.1.*
     , http-client
     , http-conduit
@@ -66,7 +66,7 @@
     , bytestring
     , case-insensitive
     , clock
-    , hs-opentelemetry-api ==0.0.2.*
+    , hs-opentelemetry-api ==0.0.3.*
     , hs-opentelemetry-exporter-otlp
     , hs-opentelemetry-otlp ==0.0.1.*
     , http-client
diff --git a/src/OpenTelemetry/Exporter/OTLP.hs b/src/OpenTelemetry/Exporter/OTLP.hs
--- a/src/OpenTelemetry/Exporter/OTLP.hs
+++ b/src/OpenTelemetry/Exporter/OTLP.hs
@@ -66,7 +66,7 @@
 import Proto.Opentelemetry.Proto.Collector.Trace.V1.TraceService (ExportTraceServiceRequest)
 import qualified Data.Vector as Vector
 import OpenTelemetry.Trace.Id (traceIdBytes, spanIdBytes)
-import OpenTelemetry.Attributes hiding (droppedAttributesCount)
+import OpenTelemetry.Attributes
 import OpenTelemetry.Resource
 import Proto.Opentelemetry.Proto.Common.V1.Common
 import Proto.Opentelemetry.Proto.Common.V1.Common_Fields
@@ -167,7 +167,7 @@
 protobufMimeType = "application/x-protobuf"
 
 -- | Initial the OTLP 'Exporter'
-otlpExporter :: (MonadIO m) => OTLPExporterConfig -> m Exporter
+otlpExporter :: (MonadIO m) => OTLPExporterConfig -> m (Exporter OT.ImmutableSpan)
 otlpExporter conf = do
   -- TODO, url parsing is janky
 -- TODO configurable retryDelay, maximum retry counts
@@ -207,7 +207,8 @@
   where
     retryDelay = 100_000 -- 100ms
     maxRetryCount = 5
-    isRetryableStatusCode status_ = status_ == status429 || status_ == status503
+    isRetryableStatusCode status_ = 
+      status_ == status408 || status_ == status429 || (statusCode status_ >= 500 && statusCode status_ < 600)
     isRetryableException = \case
       ResponseTimeout -> True
       ConnectionTimeout -> True
