add vm framework; improve vm_base