revise to use vkey module