diff --git a/src/cron-callback.sh b/src/cron-callback.sh
index 27b7cadef485e5feafe32b98f9b5851fa5d921b5..441977c0c5aa22dee64b4683a82b681f8443fdb8 100644
--- a/src/cron-callback.sh
+++ b/src/cron-callback.sh
@@ -36,8 +36,8 @@ ssh_pwauth: True
 
 function download_cloud_img_if_not_exist () {
     local cloudimg="$1"
-    [[ "$1" != "focal-server-cloudimg-amd64.img" ]] && echo "ERROR: cloudimg not supported"
-    [[ -f "base/$cloudimg" ]] || aria2c -o "base/$cloudimg" https://cloud-images.ubuntu.com/focal/current/focal-server-cloudimg-amd64.img || ! echo "Failed to download ubuntu cloudimg" || return $?
+    [[ "$1" != "focal-server-cloudimg-amd64.img" ]] && echo2 "ERROR: cloudimg not supported"
+    [[ -f "base/$cloudimg" ]] || aria2c -o "base/$cloudimg" https://cloud-images.ubuntu.com/focal/current/focal-server-cloudimg-amd64.img || ! echo2 "Failed to download ubuntu cloudimg" || return $?
 }
 
 function create_vm_if_not_exist () {
@@ -65,7 +65,8 @@ function create_vm_if_not_exist () {
 
 function start_vm_if_not_running () {
     local name=$1
-    local options="$2"
+    local options_txt="$2"
+    read -a options <<< "$options_txt"
 
     # For tracking started instance
     local uuid=`uuidgen --namespace @oid --name "qemu.$name" --sha1`
@@ -74,15 +75,18 @@ function start_vm_if_not_running () {
     ps aux | grep -F "--uuid $uuid" | grep qemu && return 0
 
     # start it
+    [[ ! -f "vm/$name/disk.img" ]] && echo2 "In start_vm, disk image vm/$name/disk.img doesn't exist. Did init_vm fail?" && return 1
     nohup qemu-system-x86_64 --uuid "$uuid" -drive file="vm/$name/disk.img",if=virtio -cdrom "vm/$name/initimg.iso" -cpu host --enable-kvm -bios /usr/share/edk2-ovmf/x64/OVMF.fd -net nic,model=rtl8139 "${options[@]}" & disown
 }
 
-# [[ $2 = "" ]] && echo "Temp script to create VM. Usage: $0 MY_GOOD_VM11 :11" && exit 1
-# create_vm_from "$1" 2 4G 50G __hardcoded__ r 1 "$2" __hardcoded__ || exit $?
-# echo "DEBUG: sshpass -p 1 ssh -p 30472 r@localhost"
-
 function do_init () {
     while IFS= read -r line; do
+        # Ignore lines starting with #
+        if [[ "$line" =~ ^\# ]]; then
+            continue
+        fi
+        # Trim leading and trailing whitespaces
+        line=$(echo "$line" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//')
         # Check if the line is non-empty
         if [ -n "$line" ]; then
             # Parse the line as "name;cloudimg;disk;username;password", trim space
@@ -104,27 +108,23 @@ function do_start () {
         if [[ "$line" =~ ^\# ]]; then
             continue
         fi
-    
         # Trim leading and trailing whitespaces
         line=$(echo "$line" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//')
-    
         # Check if the line is non-empty
         if [ -n "$line" ]; then
             # Parse the line as "name;options", only trim space in name, options can contain ;
             name=$(echo "$line" | sed -e 's/[[:space:]]*;.*$//' -e 's/^[[:space:]]*//')
-            options=$(echo "$line" | sed 's/^[^:]*://')
+            options=$(echo "$line" | sed 's/^[^;]*;//')
     
             # Check if the name is empty
             if [ -n "$name" ]; then
-                # Print the parsed values
-                echo "Name: $name|"
-                echo "Options: $options|"
-                echo "---------------------"
+                start_vm_if_not_running "$name" "$options" || echo2 "Failed to start_vm_if_not_running. $?"
             else
-                # Print an error message for empty name
-                echo "Error: Name is empty. Skipping the line."
+                echo2 "Error: Bad configuration line: $line"
             fi
         fi
     done < ../runtime.settings
 }
 
+do_init
+do_start
diff --git a/src/init.settings b/src/init.settings
index 8ad9c9f2eace627550251e057ecda0b7e03fe5e8..05a5ef986e8bebbf54a481ed03af22690ea93e8a 100644
--- a/src/init.settings
+++ b/src/init.settings
@@ -1,4 +1,4 @@
 # name;cloudimg;disk;username;password (space will be trimmed)
 instance1;focal-server-cloudimg-amd64.img;60G;r;1
-gitlab-ci;focal-server-cloudimg-amd64.img;60G;r;1
-httptest ;focal-server-cloudimg-amd64.img;60G;r;1
+#gitlab-ci;focal-server-cloudimg-amd64.img;60G;r;1
+#httptest ;focal-server-cloudimg-amd64.img;60G;r;1
diff --git a/src/runtime.settings b/src/runtime.settings
index 792f8927f18140e463889b66ba5b08684158faf2..bfd56dbb620dce335e1a27e6926d90a41481ec99 100644
--- a/src/runtime.settings
+++ b/src/runtime.settings
@@ -1,4 +1,4 @@
-# name;options (space in name will be trimmed)
+# name;options (name will be trimmed, options will be passed as-is)
 instance1;-m 2G -smp 2 -vnc :11 -net user,hostfwd=tcp::30472-:22
-gitlab-ci;-m 4G -smp 4 -vnc :12 -net user,hostfwd=tcp::30473-:22
-httptest ;-m 1G -smp 1 -vnc :13 -net user,hostfwd=tcp::30474-:22
+#gitlab-ci;-m 4G -smp 4 -vnc :12 -net user,hostfwd=tcp::30473-:22
+#httptest ;-m 1G -smp 1 -vnc :13 -net user,hostfwd=tcp::30474-:22