diff --git a/scripts/create.sh b/scripts/create.sh
index 7e5f548..f99dd57 100644
--- a/scripts/create.sh
+++ b/scripts/create.sh
@@ -1,58 +1,61 @@
 #!/bin/bash
 cd "$(dirname "$(readlink -f "$0")")"
-#change to prompts w/ default values
-# set defaults
+
+#define defaults
 cpu=1
-memory=1024
+memory=1
 root_disk=10
 variant="archlinux"
-path="default"
+path="/virtual/disks/"
 dhcp_opts=""
 ssh_key_dir="../../identity_files"
+dhcp_dir="../../dhcp_files"
 mac=52:54:00:`openssl rand -hex 1`:`openssl rand -hex 1`:`openssl rand -hex 1`
 branch="prod"
+deflate="y"
 
-usage="$(basename "$0") [options] -n server_name
-where:
-    -n name         Name of new vm/server (required, caps allowed, not fqdn)
-    -c number       Numver of CPU cores (default $cpu)
-    -r number       Ram in MB (default $memory)
-    -d size         Root disk size in GB (default 10)
-    -v variant      Linux variant (default archlinux - note should add list of optional variants)
-    -p image_path   Path to image (default /virtual/disks/[name].qcow2)
-    -m mac_addr     Specify mac address to use - if not specified, will use 52:54:00:*:*:*
-    -s subnet       Subnet to place server on (default to 172.16.99.xx)
-    -i ip_address   Specify IP address to assign (default to next available in subnet)
-    -b branch       Specify branch of build_ansible to use (defult prod)
-    -a attach       Attach existing extra disk (use full path to disK, default none)
-    -f autodeflate  Autodeflate memory on use - default true, avoid for ipa-server"
+#get variables
+numre='^[0-9]+$'
+macre='^([a-fA-F0-9]{2}:){5}[a-fA-F0-9]{2}$'
+ipsegre='^[0-255]$'
 
-# process flags
-while getopts "h:n:c:r:d:v:p:m:s:i:b:f:" flag
-do
-  case "$flag" in
-    n) name=${OPTARG};;
-    c) cpu=${OPTARG};;
-    r) memory=${OPTARG};;
-    d) root_disk=${OPTARG};;
-    v) variant=${OPTARG};;
-    p) path=${OPTARG};;
-    m) mac=${OPTARG};;
-    s) subnet=${OPTARG};dhcp_opts+=" -s $subnet";;
-    i) ip=${OPTARG};dhcp_opts+=" -i $ip";;
-    b) branch=${OPTARG};;
-    a) attach=${OPTARG};;
-    f) deflate=${OPTARG};;
-    h) ;&
-    *) echo "$usage";exit;;
-  esac
-done
-dhcp_opts+=" -m $mac"
+while true; do read -p "Name of new vm/server (caps allowed, not fqdn): " v;if [ -z $v ]; then echo "error: name is required";else name=$v;break;fi;done
+while true; do read -p "Number of CPU cores (default $cpu): " v;if [ -z $v ]; then break;else if ! [[ $v =~ $numre ]] ; then echo "error: not a number";else cpu=$v; break;fi;fi;done
+while true; do read -p "Ram in GB (default $memory): " v;if [ -z $v ]; then break;else if ! [[ $v =~ $numre ]] ; then echo "error: not a number";else memory=$v; break;fi;fi;done
+while true; do read -p "Root disk size in GB (default $root_disk): " v;if [ -z $v ]; then break;else if ! [[ $v =~ $numre ]] ; then echo "error: not a number";else root_disk=$v; break;fi;fi;done
+while true; do read -p "Path to store root disk (default $path): " v;if [ -z $v ]; then path=$path/$name.qcow2 break;else if ! [ -d $v ] ; then echo "error: not a directory";else path=$v/$name.qcow2; break;fi;fi;done
+variant=$(dialog --clear --title "Select Linux variant to use" --menu "Choose one of the following options:" 15 40 4 \
+archlinux "Arch Linux" \
+alma "Alma Linux 9" \
+2>&1 >/dev/tty);clear
+while true; do read -p "Mac address (default $mac): " v;if [ -z $v ]; then break;else if ! [[ $v =~ $macre ]] ; then echo "error: invalid mac address";else mac=$v; break;fi;fi;done
+#add subnet list
+eval "dhcp_sets=(`grep "#" $dhcp_dir/subnets/172.* | grep -o 172.* | sort -t . -k 1,1n -k 2,2n -k 3,3n | sed -e "s/:# /.* \'/" | sed -e "s/$/\'/"`)"
+subnet=$(dialog --clear --title "Select subnet to use" --menu "Choose one of the following: " 20 100 10 "${dhcp_sets[@]}" 2>&1 >/dev/tty);subnet=`echo $subnet | grep -oP "172.16.\d+"`;clear;
+while true; do read -p "Specify last segment of IP (defaults to next available): " v;if [ -z $v ]; then break;else if ! [[ $v =~ $numre ]] ; then echo "error: not a number";else ip=$v; break;fi;fi;done
+while true; do read -p "Specify branch of build_ansible to use (defult $branch): " v;if [ -z $v ]; then break;else branch=$v;break;fi;done
+while true; do read -p "Full path to extra disk to attach (if applicable, default none): " v;if [ -z $v ]; then break;else if ! [ -f $v ] ; then echo "error: file doesn't exist";else attach=$v;break;fi;fi;done
+while true; do read -p "Autodeflate memory on use y/n (default $deflate)? " v;if [ -z $v ]; then break;elif [ "$v" == "y" ];then break; elif [ "$v" == "n" ];then deflate=$v;break;else echo "error: select y or n";fi;done
 
-# get name
-shift $(($OPTIND - 1))
+echo ""
+echo "Name: $name"
+echo "CPU: $cpu"
+echo "Ram: $memory"
+echo "Root Disk: $root_disk"
+echo "Path: $path"
+echo "Variant: $variant"
+echo "Mac: $mac"
+echo "Subnet: $subnet"
+echo "IP: $ip"
+echo "Branch: $branch"
+echo "Attach: $attach"
+echo "Deflate: $deflate"
+echo ""
 
-if [[ -z "$name" ]];then echo "Server name undefined";echo "$usage";exit;fi
+read -p "Is this correct (y/n)? " v;if [ "$v" != "y" ];then "Exiting, restart to reenter info"; exit;fi
+
+if [ -n $subnet ]; then dhcp_opts=" -s $subnet";fi
+if [ -n $ip ]; then dhcp_opts+=" -i $ip";fi
 
 lname=`echo $name | tr '[:upper:]' '[:lower:]'`
 
@@ -67,14 +70,13 @@ img=`./shared_scripts/download_install_image.sh $variant`
 if [ -n "$attach" ]; then attach="--disk ${attach},discard=unmap";fi
 
 #determine if deflate should be on
-if [ -n "$deflate" ]; then deflate="--memballoon model=virtio,autodeflate=on";else deflate="--memballoon model=virtio";fi
+if [[ "$deflate" == "y" ]]; then deflate="--memballoon model=virtio,autodeflate=on";else deflate="--memballoon model=virtio";fi
 
 case "$variant" in
   "archlinux")
         # create cloud-init - replace by grabbing these directly from git
         mkdir -p /tmp/cloud-init
 
-
 echo "#cloud-config
   - name: root
     ssh_authorized_keys:
diff --git a/scripts/shared_scripts/update_dhcp.sh b/scripts/shared_scripts/update_dhcp.sh
index 84ad11e..d137df4 100755
--- a/scripts/shared_scripts/update_dhcp.sh
+++ b/scripts/shared_scripts/update_dhcp.sh
@@ -52,7 +52,7 @@ if [[ "$ip" -eq "generate" ]];then
     ip="${subnet}.2"
   fi
 else
-  subnet=`echo $ip | grep -Po "\d+\.\d+\.\d+"`
+  ip="${subnet}.$ip"
 fi
 touch $dhcp_dir/subnets/$subnet