diff --git a/_includes/functions/get_value.html b/_includes/functions/get_value.html
index bbd1815..6d9ac81 100644
--- a/_includes/functions/get_value.html
+++ b/_includes/functions/get_value.html
@@ -2,31 +2,41 @@
{%- assign name = include.params.name -%}
{%- endif -%}
+{%- assign return = nil -%}
+
{%- assign keys = name | split:'.' -%}
{%- assign name = keys.first -%}
-
-{%- if page[name] != nil -%}
- {%- assign return = page[name] -%}
-{%- elsif site[name] != nil -%}
- {%- assign return = site[name] -%}
-{%- elsif site.data[name] != nil -%}
- {%- assign return = site.data[name] -%}
-{%- elsif site.defaults[page.layout][name] != nil -%}
- {%- assign return = site.defaults[page.layout][name] -%}
-{%- elsif site.data.defaults[page.layout][name] != nil -%}
- {%- assign return = site.data.defaults[page.layout][name] -%}
-{%- elsif layout[name] != nil -%}
- {%- assign return = layout[name] -%}
-{%- else -%}
- {%- assign return = include.params.default -%}
-{%- endif -%}
-
{%- assign keys = keys | shift -%}
-{%- for key in keys -%}
- {%- assign return = return[key] -%}
- {%- if return == nil -%}
- {%- assign return = include.params.default -%}
+
+{%- for step in (1..7) -%}
+
+ {%- case step -%}
+ {%- when 1 -%}
+ {%- assign return = page[name] -%}
+ {%- when 2 -%}
+ {%- assign return = site[name] -%}
+ {%- when 3 -%}
+ {%- assign return = site.data[name] -%}
+ {%- when 4 -%}
+ {%- assign return = site.defaults[page.layout][name] -%}
+ {%- when 5 -%}
+ {%- assign return = site.data.defaults[page.layout][name] -%}
+ {%- when 6 -%}
+ {%- assign return = layout[name] -%}
+ {%- else -%}
+ {%- assign return = include.params.default -%}
+ {%- endcase -%}
+
+ {%- for key in keys -%}
+ {%- assign return = return[key] -%}
+ {%- if return == nil -%}
+ {%- break -%}
+ {%- endif -%}
+ {%- endfor -%}
+
+ {%- if return != nil -%}
{%- break -%}
{%- endif -%}
+
{%- endfor -%}