refactor VE system