diff --git a/templates/node.html.twig b/templates/node.html.twig
index ff6fd90..6b98bb8 100644
--- a/templates/node.html.twig
+++ b/templates/node.html.twig
@@ -4,53 +4,51 @@
  * Default theme implementation to display a node.
  *
  * Available variables:
- * - title: the (sanitized) title of the node.
- * - content: An array of node items. Use render(content) to print them all, or
- *   print a subset such as render(content['field_example']). Use
- *   hide(content['field_example']) to temporarily suppress the printing of a
- *   given element.
- * - user_picture: The node author's picture from user-picture.tpl.php.
- * - date: Formatted creation date. Preprocess functions can reformat it by
- *   calling format_date() with the desired parameters on the created variable.
- * - name: Themed username of node author output from theme_username().
+ * - label: The node title.
+ * - content: An array of node items. Use {{ content }} to print them all,
+ *   or print a subset such as {{ content.field_example }}. Use
+ *   {% hide(content.field_example) %} to temporarily suppress the printing
+ *   of a given element.
+ * - author: Themed username of node author output from theme_username().
+ * - user_picture: The node author's picture from user-picture.html.twig.
+ * - created: Formatted creation date. Preprocess functions can reformat it by
+ *   calling format_date() with the desired parameters on the $created variable.
+ * - changed: Formatted last-changed date.
  * - node_url: Direct url of the current node.
- * - terms: the themed list of taxonomy term links output from theme_links().
- * - display_submitted: whether submission information should be displayed.
- * - classes: String of classes that can be used to style contextually through
- *   CSS. It can be manipulated through the variable classes_array from
- *   preprocess functions. The default values can be one or more of the following:
- *   - node: The current template type, i.e., "theming hook".
+ * - display_submitted: Whether submission information should be displayed.
+ * - attributes: An instance of Attributes class that can be manipulated as an
+ *    array and printed as a string.
+ *    It includes the 'class' information, which includes:
+ *   - node: The current template type; for example, "theming hook".
  *   - node-[type]: The current node type. For example, if the node is a
- *     "Blog entry" it would result in "node-blog". Note that the machine
+ *     "Article" it would result in "node-article". Note that the machine
  *     name will often be in a short form of the human readable label.
- *   - node-teaser: Nodes in teaser form.
- *   - node-preview: Nodes in preview mode.
+ *   - view-mode-[view_mode]: The View Mode of the node; for example, "teaser"
+ *     or "full".
+ *   - preview: Nodes in preview mode.
  *   The following are controlled through the node publishing options.
- *   - node-promoted: Nodes promoted to the front page.
- *   - node-sticky: Nodes ordered above other non-sticky nodes in teaser listings.
- *   - node-unpublished: Unpublished nodes visible only to administrators.
- * - title_prefix (array): An array containing additional output populated by
- *   modules, intended to be displayed in front of the main title tag that
- *   appears in the template.
- * - title_suffix (array): An array containing additional output populated by
- *   modules, intended to be displayed after the main title tag that appears in
- *   the template.
+ *   - promoted: Nodes promoted to the front page.
+ *   - sticky: Nodes ordered above other non-sticky nodes in teaser
+ *     listings.
+ *   - unpublished: Unpublished nodes visible only to administrators.
+ * - title_prefix: Additional output populated by modules, intended to be
+ *   displayed in front of the main title tag that appears in the template.
+ * - title_suffix: Additional output populated by modules, intended to be
+ *   displayed after the main title tag that appears in the template.
  *
  * Other variables:
- * - node: Full node object. Contains data that may not be safe.
- * - type: Node type, i.e. story, page, blog, etc.
+ * - node: Full node entity. Contains data that may not be safe.
+ * - type: Node type; for example, page, article, etc.
  * - comment_count: Number of comments attached to the node.
  * - uid: User ID of the node author.
  * - created: Time the node was published formatted in Unix timestamp.
- * - classes_array: Array of html class attribute values. It is flattened
- *   into a string within the variable classes.
  * - zebra: Outputs either "even" or "odd". Useful for zebra striping in
  *   teaser listings.
  * - id: Position of the node. Increments each time it's output.
  *
  * Node status variables:
- * - view_mode: View mode, e.g. 'full', 'teaser'...
- * - teaser: Flag for the teaser state (shortcut for view_mode == 'teaser').
+ * - view_mode: View mode; for example, "teaser" or "full".
+ * - teaser: Flag for the teaser state (shortcut for $view_mode == 'teaser').
  * - page: Flag for the full page state.
  * - promote: Flag for front page promotion state.
  * - sticky: Flags for sticky post setting.
@@ -63,23 +61,26 @@
  * - is_admin: Flags true when the current user is an administrator.
  *
  * Field variables: for each field instance attached to the node a corresponding
- * variable is defined, e.g. node->body becomes body. When needing to access
- * a field's raw values, developers/themers are strongly encouraged to use these
- * variables. Otherwise they will have to explicitly specify the desired field
- * language, e.g. node->body['en'], thus overriding any language negotiation
- * rule that was previously applied.
+ * variable is defined; for example, $node->body becomes body. When needing to
+ * access a field's raw values, developers/themers are strongly encouraged to
+ * use these variables. Otherwise they will have to explicitly specify the
+ * desired field language; for example, $node->body['en'], thus overriding any
+ * language negotiation rule that was previously applied.
  *
  * @see template_preprocess()
  * @see template_preprocess_node()
- * @see template_process()
+ *
+ * @TODO: might be a good idea to remove the id attribute, because if that gets
+ *   rendered twice on a page this is invalid CSS for example: two lists
+ *   in different view modes.
+ *
+ * @ingroup themeable
  */
 #}
-<article id="node-{{ node.nid }}" class="{{ classes }}"{{ attributes }}>
+<article id="node-{{ node.nid }}" class="{{ attributes.class }}"{{ attributes }}>
   {{ title_prefix }}
   {% if not page %}
-    <h2{{ title_attributes }}>
-      <a href="{{ node_url }}" rel="bookmark">{{ label }}</a>
-    </h2>
+    <h2><a href="{{ node_url }}" rel="bookmark">{{ label }}</a></h2>
   {% endif %}
   {{ title_suffix }}
 
diff --git a/zurb_foundation.info b/zurb_foundation.info
deleted file mode 100644
index d606736..0000000
--- a/zurb_foundation.info
+++ /dev/null
@@ -1,61 +0,0 @@
-name = ZURB Foundation
-description = Drupal implementation of the Foundation 4 framework.
-core = 8.x
-engine = twig
-
-; Image appears on admin/appearance
-screenshot = images/screenshot.png
-
-; Foundation framework stylesheets
-stylesheets[all][] = css/foundation.min.css
-; Uncompressed uncomment for dev or as a reference
-;stylesheets[all][] = css/foundation.css 
-
-; Base theme specific CSS
-stylesheets[all][] = css/drupal.css
-
-; Theme specific CSS
-stylesheets[all][] = css/app.css
-
-; Foundation framework scripts.
-scripts[] = js/modernizr.foundation.js
-scripts[] = js/foundation.min.js
-scripts[] = js/app.js
-
-; Uncompressed uncomment for development or as a reference
-; scripts[] = js/jquery.foundation.accordion.js
-; scripts[] = js/jquery.foundation.alerts.js
-; scripts[] = js/jquery.foundation.buttons.js
-; scripts[] = js/jquery.foundation.clearing.js
-; scripts[] = js/jquery.foundation.forms.js
-; scripts[] = js/jquery.foundation.joyride.js
-; scripts[] = js/jquery.foundation.magellan.js
-; scripts[] = js/jquery.foundation.mediaQueryToggle.js
-; scripts[] = js/jquery.foundation.navigation.js
-; scripts[] = js/jquery.foundation.orbit.js
-; scripts[] = js/jquery.foundation.reveal.js
-; scripts[] = js/jquery.foundation.tabs.js
-; scripts[] = js/jquery.foundation.tooltips.js
-; scripts[] = js/jquery.placeholder.js
-
-; Regions are output in the page.tpl.php
-regions[header]          = Header
-regions[navigation]      = Navigation
-regions[help]            = Help
-regions[highlighted]     = Highlighted
-regions[content]         = Content
-regions[sidebar_first]   = Left Sidebar
-regions[sidebar_second]  = Right Sidebar
-regions[footer_first]    = Footer first
-regions[footer_middle]   = Footer middle
-regions[footer_last]     = Footer last
-
-; Hidden regions
-regions_hidden[] = Page top
-regions_hidden[] = Page bottom
-
-; Possible theme settings
-; settings[foundation_zurb_copyright] = 1
-; settings[foundation_zurb_credit] = ''
-; settings[foundation_zurb_font_fallback] = 'sans-serif'
-; settings[foundation_zurb_font_selectors] = 'body'
diff --git a/zurb_foundation.info.yml b/zurb_foundation.info.yml
new file mode 100644
index 0000000..15a59f9
--- /dev/null
+++ b/zurb_foundation.info.yml
@@ -0,0 +1,71 @@
+name: ZURB Foundation
+description: 'Drupal implementation of the Foundation 4 framework.'
+package: Zurb
+version: 8.x-4.x-dev
+core: 8.x
+engine: twig
+
+# Image appears on admin/appearance
+#screenshot = images/screenshot.png
+
+# Foundation framework stylesheets
+
+stylesheets:
+  all:
+    - css/foundation.min.css
+# Uncompressed uncomment for dev or as a reference
+#    - css/foundation.css 
+
+# Base theme specific CSS
+    - css/drupal.css
+
+# Theme specific CSS
+    - css/app.css
+
+# Foundation framework scripts.
+scripts:
+  - js/modernizr.foundation.js
+  - js/foundation.min.js
+  - js/app.js
+
+# Uncompressed uncomment for development or as a reference
+# scripts[] = js/jquery.foundation.accordion.js
+# scripts[] = js/jquery.foundation.alerts.js
+# scripts[] = js/jquery.foundation.buttons.js
+# scripts[] = js/jquery.foundation.clearing.js
+# scripts[] = js/jquery.foundation.forms.js
+# scripts[] = js/jquery.foundation.joyride.js
+# scripts[] = js/jquery.foundation.magellan.js
+# scripts[] = js/jquery.foundation.mediaQueryToggle.js
+# scripts[] = js/jquery.foundation.navigation.js
+# scripts[] = js/jquery.foundation.orbit.js
+# scripts[] = js/jquery.foundation.reveal.js
+# scripts[] = js/jquery.foundation.tabs.js
+# scripts[] = js/jquery.foundation.tooltips.js
+# scripts[] = js/jquery.placeholder.js
+
+# Regions are output in the page.tpl.php
+regions:
+  header: Header
+  navigation: Navigation
+  help: Help
+  highlighted: Highlighted
+  content: Content
+  sidebar_first: 'Left Sidebar'
+  sidebar_second: 'Right Sidebar'
+  footer_first: 'Footer first'
+  footer_middle: 'Footer middle'
+  footer_last: 'Footer last'
+  page_top: 'Page top'
+  page_bottom: 'Page bottom'
+
+# Hidden regions
+regions_hidden:
+  - page_top
+  - page_bottom
+
+# Possible theme settings
+# settings[foundation_zurb_copyright] = 1
+# settings[foundation_zurb_credit] = ''
+# settings[foundation_zurb_font_fallback] = 'sans-serif'
+# settings[foundation_zurb_font_selectors] = 'body'
