finally cleaning up some the 'generic' vector ops