move a lot of code into vmsnapshot strategy
fix compile
fix compile