                  (pop-item type state))
       state)))
 
-(define-registered vector_integer_first (firster :vector_integer :integer))
-(define-registered vector_float_first (firster :vector_float :float))
-(define-registered vector_boolean_first (firster :vector_boolean :boolean))
-(define-registered vector_string_first (firster :vector_string :string))
+(define-registered vector_integer_first (with-meta (firster :vector_integer :integer) {:stack-types [:vector_integer :integer]}))
+(define-registered vector_float_first (with-meta (firster :vector_float :float) {:stack-types [:vector_float :float]}))
+(define-registered vector_boolean_first (with-meta (firster :vector_boolean :boolean) {:stack-types [:vector_boolean :boolean]}))
+(define-registered vector_string_first (with-meta (firster :vector_string :string) {:stack-types [:vector_string :string]}))
 
 (defn laster
   "Returns a function that takes a state and gets the last item from the type stack."

                   type
                   (pop-item lit-type (pop-item type state)))))))

(define-registered vector_integer_remove (removeer :vector_integer :integer))
(define-registered vector_float_remove (removeer :vector_float :float))
(define-registered vector_boolean_remove (removeer :vector_boolean :boolean))
(define-registered vector_string_remove (removeer :vector_string :string))

          state))
      state)))

(define-registered vector_integer_concat (with-meta (concater :vector_integer) {:stack-types [:vector_integer]}))
(define-registered vector_float_concat (with-meta (concater :vector_float) {:stack-types [:vector_float]}))
(define-registered vector_boolean_concat (with-meta (concater :vector_boolean) {:stack-types [:vector_boolean]}))
(define-registered vector_string_concat (with-meta (concater :vector_string) {:stack-types [:vector_string]}))

(defn conjer
  "Returns a function that takes a state and conj's an item onto the type stack."
