diff --git a/form.yml b/form.yml
new file mode 100644
index 0000000000000000000000000000000000000000..07ca419c82693f29fe0ba16a649b4e8202eb98e0
--- /dev/null
+++ b/form.yml
@@ -0,0 +1,55 @@
+---
+cluster: "SLURM_CLUSTER"  
+attributes:
+  bc_num_hours:
+    value: 1
+
+  bc_num_slots:
+    label: Number of CPU
+    value: 1
+    min: 1
+    max: 24
+    step: 1
+
+  bc_num_mems:
+    widget: "number_field"
+    label: Memory per CPU (GB)
+    value: 4
+    min: 1
+    max: 128
+    step: 1
+
+  bc_partition:
+    widget: select
+    label: Partition
+    options:
+      - [ "express", "express" ]
+      - [ "short", "short" ]
+      - [ "medium", "medium" ]
+      - [ "long", "long" ]
+      - [ "interactive", "interactive" ]
+      - [ "pascalnodes", "pascalnodes" ]
+      - [ "pascalnodes-medium", "pascalnodes-medium" ]
+      - [ "largemem", "largemem" ]
+      - [ "largemem-long", "largemem-long" ]
+      - [ "amd-hdr100", "amd-hdr100" ]
+
+  version:
+    widget: select
+    label: "MATLAB version"
+    help: "This defines the version of MATLAB you want to load."
+    options:
+{% for ver in matlab_vers %}
+      - [ "{{ ver }}", "{{ matlab_module_name }}/{{ ver }}"]
+{% endfor %}
+
+  cuda_toolkit: "{{ cuda_toolkit_module }}"
+
+form:
+  - version
+  - bc_num_hours
+  - bc_partition
+  - bc_num_slots
+  - bc_num_mems
+  - bc_email_on_started
+  - cuda_toolkit
diff --git a/form.yml.erb b/form.yml.erb
deleted file mode 100644
index 5a094116185739c172e764e38a01b3b150f8edfd..0000000000000000000000000000000000000000
--- a/form.yml.erb
+++ /dev/null
@@ -1,148 +0,0 @@
-<%-
-  groups = OodSupport::User.new.groups.sort_by(&:id).tap { |groups|
-    groups.unshift(groups.delete(OodSupport::Process.group))
-  }.map(&:name).grep(/^P./)
--%>
----
-cluster:
-  - "owens"
-  - "pitzer"
-form:
-  - version
-  - account
-  - bc_num_hours
-  - bc_num_slots
-  - num_cores
-  - node_type
-  - bc_vnc_resolution
-  - bc_email_on_started
-attributes:
-  num_cores:
-    widget: "number_field"
-    label: "Number of cores"
-    value: 1
-    help: |
-      Number of cores on node type (4 GB per core unless requesting whole
-      node). Leave blank if requesting full node.
-    min: 0
-    max: 28
-    step: 1
-  bc_num_slots: "1"
-  bc_vnc_resolution:
-    required: true
-  account:
-    label: "Project"
-    widget: select
-    options:
-      <%- groups.each do |group| %>
-      - "<%= group %>"
-      <%- end %>
-  node_type:
-      widget: select
-      label: "Node type"
-      help: |
-        - **Standard Compute** <br>
-          These are standard HPC machines. Owens has 648 of these nodes with 40
-          cores and 128 GB of memory. Pitzer has 224 of these nodes with 40 cores and
-          340 of these nodes with 48 cores. All pitzer nodes have 192 GB of RAM. Chosing "any" as the node type will decrease
-          your wait time.
-        - **GPU Enabled** <br>
-          These are HPC machines with GPUs. Owens has 160 nodes with 1 [NVIDIA Tesla P100 GPU]
-          and Pitzer has 74 nodes with 2 [NVIDIA Tesla V100 GPUs]. They have the same
-          CPU and memory characteristics of standard compute. However, Pitzer's 40 core machines
-          have 2 GPUs with 16 GB of RAM; and Pitzer's 48 core machines have 2 GPUs with 32 GB of RAM.
-          Dense GPU types have 4 GPUs with 16 GB of RAM.
-        - **Large Memory** <br>
-          These are HPC machines with very large amounts of memory. Owens has 16 hugemem nodes
-          with 48 cores and 1.5 TB of RAM. Pitzer has 4 hugemem nodes with 3 TB of RAM and 80 cores.
-          Pitzer also has 12 Largmem nodes which have 48 cores with 768 GB of RAM.
-
-        [NVIDIA Tesla P100 GPU]: http://www.nvidia.com/object/tesla-p100.html
-        [NVIDIA Tesla V100 GPUs]: https://www.nvidia.com/en-us/data-center/v100/
-      options:
-        - [
-            "any",     "any",
-            data-max-num-cores-for-cluster-owens: 28,
-            data-max-num-cores-for-cluster-pitzer: 48,
-          ]
-        - [
-            "40 core",     "any-40core",
-            data-max-num-cores-for-cluster-pitzer: 40,
-            data-option-for-cluster-owens: false,
-          ]
-        - [
-            "48 core",     "any-48core",
-            data-max-num-cores-for-cluster-pitzer: 48,
-            data-option-for-cluster-owens: false,
-          ]
-        - [
-            "any gpu",     "gpu",
-            data-max-num-cores-for-cluster-owens: 28,
-            data-max-num-cores-for-cluster-pitzer: 48,
-          ]
-        - [
-            "40 core gpu",     "gpu-40core",
-            data-max-num-cores-for-cluster-pitzer: 40,
-            data-option-for-cluster-owens: false,
-          ]
-        - [
-            "48 core gpu",     "gpu-48core",
-            data-max-num-cores-for-cluster-pitzer: 48,
-            data-option-for-cluster-owens: false,
-          ]
-        - [
-            "largemem", "largemem",
-            data-min-num-cores-for-cluster-pitzer: 48,
-            data-max-num-cores-for-cluster-pitzer: 48,
-            data-option-for-cluster-owens: false,
-          ]
-        - [
-            "hugemem", "hugemem",
-            data-min-num-cores-for-cluster-owens: 48,
-            data-max-num-cores-for-cluster-owens: 48,
-            data-min-num-cores-for-cluster-pitzer: 80,
-            data-max-num-cores-for-cluster-pitzer: 80,
-          ]
-        - [
-            "debug",   "debug",
-            data-max-num-cores-for-cluster-owens: 28,
-            data-max-num-cores-for-cluster-pitzer: 48,
-            data-option-for-cluster-owens: false,
-            data-option-for-cluster-pitzer: false,
-          ]
-  version:
-    widget: select
-    label: "MATLAB version"
-    help: "This defines the version of MATLAB you want to load."
-    options:
-      - [ 
-          "R2022a", "matlab/r2022a",           
-        ]    
-      - [ 
-          "R2020a", "matlab/r2020a",           
-        ]    
-      - [ 
-          "R2019b", "matlab/r2019b",           
-        ]    
-      - [ 
-          "R2019a", "matlab/r2019a",           
-          data-option-for-cluster-owens: false,
-        ]    
-      - [ 
-          "R2018b", "matlab/r2018b" 
-        ]
-      - [ 
-          "R2018a", "matlab/r2018a" 
-        ]
-      - [ 
-          "R2017a", "matlab/r2017a",
-          data-option-for-cluster-pitzer: false, 
-        ]
-      - [ 
-          "R2016b", "matlab/r2016b",
-          data-option-for-cluster-pitzer: false,
-        ]
-      - [ 
-          "R2015b", "matlab/r2015b" ,
-          data-option-for-cluster-pitzer: false,
-        ]
diff --git a/manifest.yml b/manifest.yml
index 0841d1e2cfbebde315166da5104dfa6a36413e92..c2232c524eaab373cdc3f4a5428717081c8e52a6 100644
--- a/manifest.yml
+++ b/manifest.yml
@@ -4,8 +4,8 @@ category: Interactive Apps
 subcategory: GUIs
 role: batch_connect
 description: |
-  This app will launch a [MATLAB] GUI on the [Owens cluster]. You will be able
+  This app will launch a [MATLAB] GUI on the [Cheaha cluster]. You will be able
   to interact with the MATLAB GUI through a VNC session.
 
   [MATLAB]: https://www.mathworks.com/products/matlab.html
-  [Owens cluster]: https://www.osc.edu/resources/technical_support/supercomputers/owens
+  [Cheaha cluster]: https://uabrc.github.io
diff --git a/script.sh.erb b/script.sh.erb
new file mode 100644
index 0000000000000000000000000000000000000000..8884fa8a339c8c45a136935c94d1d03887bffa11
--- /dev/null
+++ b/script.sh.erb
@@ -0,0 +1,36 @@
+#!/usr/bin/env bash
+
+# Set working directory to home directory
+cd "${HOME}"
+
+#
+# Launch Xfce Window Manager and Panel
+#
+
+(
+  export SEND_256_COLORS_TO_REMOTE=1
+  export XDG_CONFIG_HOME="<%= session.staged_root.join("config") %>"
+  export XDG_DATA_HOME="<%= session.staged_root.join("share") %>"
+  export XDG_CACHE_HOME="$(mktemp -d)"
+  module reset
+  set -x
+  xfwm4 --compositor=off --daemon --sm-client-disable
+  xsetroot -solid "#D3D3D3"
+  xfsettingsd --sm-client-disable
+  xfce4-panel --sm-client-disable
+) &
+
+#
+# Start MATLAB
+#
+
+<%- if context.bc_partition == "pascalnodes" -%>
+# Load CUDA toolkit
+module load <%= context.cuda_toolkit %>
+<%- end -%>
+# Load the required environment
+module load <%= context.version %>
+# Launch MATLAB
+module list
+set -x
+matlab -desktop
diff --git a/submit.yml.erb b/submit.yml.erb
index e89017d8891b8cf42b243d773d4d3e7079d41cc1..2521f4a5e8aa7530badeaa009f5378a2f38e6d27 100644
--- a/submit.yml.erb
+++ b/submit.yml.erb
@@ -1,24 +1,14 @@
-<%-
-  ppn = num_cores.blank? ? 28 : num_cores.to_i
-  nodes = bc_num_slots.blank? ? 1 : bc_num_slots.to_i
-
-  case node_type
-  when "hugemem"
-    ppn = 48
-    partition = bc_num_slots.to_i > 1 ? "hugemem-parallel" : "hugemem"
-    slurm_args = [ "--nodes", "#{nodes}", "--ntasks-per-node", "#{ppn}", "--partition", partition ]
-  when "vis"
-    slurm_args = ["--nodes", "#{nodes}", "--ntasks-per-node", "#{ppn}", "--gpus-per-node", "1", "--gres", "vis" ]
-  else
-    slurm_args = ["--nodes", "#{nodes}", "--ntasks-per-node", "#{ppn}" ]
-  end
-%>
 ---
 batch_connect:
-  template: vnc
+  template: "vnc"
 script:
-  accounting_id: "<%= account %>"
   native:
-  <%- slurm_args.each do |arg| %>
-    - "<%= arg %>"
-  <%- end %>
+    - "-N 1"
+    - "-n <%= bc_num_slots.blank? ? 1 : bc_num_slots.to_i %>"
+    - "--mem-per-cpu=<%= bc_num_mems.blank? ? 4 : bc_num_mems.to_i %>G"
+    - "--partition=<%= bc_partition %>"
+    - "--time=<%= bc_num_hours.blank? ? 1 : bc_num_hours.to_i %>:00:00"
+    - "--job-name=ood-matlab-<%= version.split("/")[-1] %>"
+<%- if bc_partition.include? "pascalnodes" -%>
+    - "--gres=gpu:1"
+<%- end -%>