diff --git a/arraycontext/container/__init__.py b/arraycontext/container/__init__.py
index afe4a406a89ba0d586da49c5d68ddf951c515453..e70b51dfaacbd2e52374b1ad6b3ea1ed906daf1f 100644
--- a/arraycontext/container/__init__.py
+++ b/arraycontext/container/__init__.py
@@ -309,7 +309,8 @@ def _deserialize_ndarray_container(  # type: ignore[misc]
 
     result = type(template)(template.shape, dtype=object)
     for i, subary in serialized:
-        result[i] = subary
+        # FIXME: numpy annotations don't seem to handle object arrays very well
+        result[i] = subary  # type: ignore[call-overload]
 
     return result
 
diff --git a/arraycontext/loopy.py b/arraycontext/loopy.py
index 7b1d6a0c842919993ba745f6ca0ab168d7c88f2e..af57932450ff1c752efc2da1a297ff124e473bcb 100644
--- a/arraycontext/loopy.py
+++ b/arraycontext/loopy.py
@@ -103,7 +103,7 @@ def _get_scalar_func_loopy_program(actx, c_name, nargs, naxes):
         from arraycontext.transform_metadata import ElementwiseMapKernelTag
 
         def sub(name: str) -> Variable | Subscript:
-            return Variable(name)[subscript] if subscript else Variable(name)
+            return Subscript(Variable(name), subscript) if subscript else Variable(name)
 
         return make_loopy_program(
                 [domain_bset], [