[WIP] Add array type interface

_Maybe_ rename `etc` -> `ctx`.