re-implement vector