diff --git a/cron-callback.sh b/cron-callback.sh
index 143f32f5ffa2cd697fc70b5c7f3c6771b26e59d5..74833f9d16dab11761c47f7682cca243d4d0fa44 100755
--- a/cron-callback.sh
+++ b/cron-callback.sh
@@ -52,7 +52,6 @@ function download_cloud_img_if_not_exist () {
 }
 
 function create_vm_if_not_exist () {
-    # TODO: support create VM from existing qcow2 snapshot
     local name=$1
     local cloudimg=$2
     local disk=$3
@@ -66,6 +65,8 @@ function create_vm_if_not_exist () {
 
     echo2 "+ Creating VM image $name with options $@..."
     if [ "$disk" != "" ]; then
+        # TODO: support creating empty img and manual install later
+        ### TODO: check empty cloudimg
         # create from cloudimg
         download_cloud_img_if_not_exist "$cloudimg" || return $?
         generate_metadata "$name" > "vm/$name/meta-data" || return $?
diff --git a/init.settings b/init.settings
index 068441ec3d8df29ba46ce9da5be40ddca0bf1fa4..cba700a6f8834e0506e5164950c93a0e1758791a 100644
--- a/init.settings
+++ b/init.settings
@@ -8,3 +8,6 @@ archtest    ;Arch-Linux-x86_64-cloudimg.qcow2;50G;r;1
 # name;existing_img_fname
 ubuntucorp  ;ubuntu-intune.qcow2
 devbox      ;win10pro-22h2-virtio-uefi.qcow2
+
+## or create empty VM and install OS manually later
+manual      ;                                ;50G