reverted to const vector& for performance; added constructor exception