update: implemented 'required options' and some cleanup to vector operations