recrusive copy for vm get|put