fixes
diff --git a/files/dhcpd.conf b/files/dhcpd.conf
index 8681c92..13375a6 100644
--- a/files/dhcpd.conf
+++ b/files/dhcpd.conf
@@ -4,32 +4,48 @@
 omapi-port {{ server.omapi_port }};
 {% endif -%}
 
+{%- if server.ddns_updates is defined %}
+
+ddns-updates on;
+ddns-update-style interim;
+
+update-static-leases on;
+use-host-decl-names on;
+
+{#
+# Key from bind
+include "<%= @dnsupdatekey %>";
+<% @dnsdomain.each do |dom| -%>
+zone <%= dom %>. {
+  primary <%= @nameservers.first %>;
+  key <%= @dnskeyname%>;
+}
+#}
+
+{%- else -%}
+
 ddns-update-style {{ server.ddns_update_style|default('none') }};
 
-{%- if server.ddns_updates is defined %}
-ddns-updates {{ server.ddns_updates }};
-{%- endif -%}
+{%- endif %}
 
 {%- if server.update_static_leases is defined %}
 update-static-leases {{ server.update_static_leases }};
-{%- endif -%}
+{%- endif %}
 
 {%- if server.use_host_decl_names is defined %}
 use-host-decl-names {{ server.use_host_decl_names }};
-{{- "\n" }}
-{%- endif -%}
+{%- endif %}
 
-{%- if server.zones is defined -%}
-{%- for zone in server.dhcpd.zones|default({}) %}
-zone {{ zone.name }} {
+{%- for zone_name, zone in server.zone.iteritems() %}
+
+zone {{ zone_name }} {
   primary {{ zone.primary }};
   {%- if 'key' in zone %}
   key {{ zone.key|default('rndc-key') }};
   {%- endif %}
 }
-{{- "\n" }}
-{%- endfor -%}
-{%- endif %}
+
+{%- endfor %}
 
 default-lease-time {{ server.default_lease_time|default('600') }};
 max-lease-time {{ server.max_lease_time|default('7200') }};
@@ -50,36 +66,29 @@
 {{- "\n" }}
 {%- endif -%}
 
-{%- if server.allow is defined -%}
-  {%- for a in server.dhcpd.allow|default([]) %}
-allow {{ a }};
-  {%- endfor -%}
-{{ "\n" }}
-{%- endif -%}
+option domain-name "{{ server.domain_name }}";
+option domain-name-servers {{ server.name_servers|join( ', ') }};
 
-{%- if server.deny is defined -%}
-  {%- for d in server.dhcpd.deny|default([]) %}
-deny {{ d }};
-  {%- endfor -%}
-{{ "\n" }}
-{%- endif -%}
+allow booting;
+allow bootp;
 
-{%- if server.ignore is defined -%}
-  {%- for i in server.ignore|default([]) %}
-ignore {{ i }};
-  {%- endfor -%}
-{{ "\n" }}
-{%- endif -%}
+option fqdn.no-client-update    on;  # set the "O" and "S" flag bits
+option fqdn.rcode2            255;
+option pxegrub code 150 = text ;
 
-{%- set options = server.default_options|default([]) -%}
+{#
 
-{%- if server.dhcpd.options is defined -%}
-  {%- do options.extend(server.dhcpd.options) -%}
-{%- endif -%}
+<% if has_variable?( 'pxeserver' ) &&
+  has_variable?( 'pxefilename' ) &&
+  @pxeserver &&
+  @pxefilename -%>
+# PXE Handoff.
+next-server <%= @pxeserver %>;
+filename "<%= @pxefilename %>";
+<% end -%>
 
-{%- for o in options %}
-option {{ o }};
-{%- endfor -%}
-{%- set options = [] -%}
+#}
 
-{%- endif -%}
+include "{{ server.config.dir }}/dhcpd.hosts";
+
+{%- endif -%}
\ No newline at end of file