add VectorArg and tests
work on optimize