now it is able to specify different way to construct contextvector