diff --git a/basis/specialized-arrays/direct/functor/functor.factor b/basis/specialized-arrays/direct/functor/functor.factor
index b49dfa35e4..89d1b5423d 100755
--- a/basis/specialized-arrays/direct/functor/functor.factor
+++ b/basis/specialized-arrays/direct/functor/functor.factor
@@ -8,6 +8,7 @@ IN: specialized-arrays.direct.functor
FUNCTOR: define-direct-array ( T -- )
A' IS ${T}-array
+S IS ${T}-sequence
>A' IS >${T}-array
IS <${A'}>
A'{ IS ${A'}{
@@ -24,6 +25,8 @@ TUPLE: A
{ underlying c-ptr read-only }
{ length fixnum read-only } ;
+INSTANCE: A S
+
: ( alien len -- direct-array ) A boa ; inline
M: A length length>> ;
M: A nth-unsafe underlying>> NTH call ;
diff --git a/basis/specialized-arrays/functor/functor.factor b/basis/specialized-arrays/functor/functor.factor
index 06b9aef17d..a8d8d677ec 100644
--- a/basis/specialized-arrays/functor/functor.factor
+++ b/basis/specialized-arrays/functor/functor.factor
@@ -16,6 +16,7 @@ M: bad-byte-array-length summary
FUNCTOR: define-array ( T -- )
A DEFINES-CLASS ${T}-array
+S DEFINES-CLASS ${T}-sequence
DEFINES <${A}>
(A) DEFINES (${A})
>A DEFINES >${A}
@@ -27,10 +28,14 @@ SET-NTH [ T dup c-setter array-accessor ]
WHERE
+MIXIN: S
+
TUPLE: A
{ length array-capacity read-only }
{ underlying byte-array read-only } ;
+INSTANCE: A S
+
: ( n -- specialized-array ) dup T A boa ; inline
: (A) ( n -- specialized-array ) dup T (c-array) A boa ; inline
diff --git a/basis/specialized-vectors/functor/functor.factor b/basis/specialized-vectors/functor/functor.factor
index 08c44cd197..48c480b4d1 100644
--- a/basis/specialized-vectors/functor/functor.factor
+++ b/basis/specialized-vectors/functor/functor.factor
@@ -10,6 +10,7 @@ FUNCTOR: define-vector ( T -- )
V DEFINES-CLASS ${T}-vector
A IS ${T}-array
+S IS ${T}-sequence
IS <${A}>
>V DEFERS >${V}
@@ -19,6 +20,8 @@ WHERE
V A vectors.functor:define-vector
+INSTANCE: V S
+
M: V contract 2drop ;
M: V byte-length underlying>> byte-length ;