minimize exposure of internal variables
be more accepting in vector extension arguments