Split vsx_engine in 2, abstracted engine and implementation