diff --git a/resources/frontend_client/app/admin/databases/partials/database_edit.html b/resources/frontend_client/app/admin/databases/partials/database_edit.html
index 890025a161e851aa57c2ce90ea3e71d5e655b770..c7c5f00f0b6907e9ebb07e18a0dd71f50f4b1f2c 100644
--- a/resources/frontend_client/app/admin/databases/partials/database_edit.html
+++ b/resources/frontend_client/app/admin/databases/partials/database_edit.html
@@ -1,7 +1,7 @@
 <div class="wrapper">
     <section class="Breadcrumbs">
         <a class="Breadcrumb Breadcrumb--path" href="/admin/databases/">Databases</a>
-        <cv-chevron-right-icon class="Breadcrumb-divider" width="12px" height="12px"></cv-chevron-right-icon>
+        <mb-icon name="chevronright" class="Breadcrumb-divider" width="12px" height="12px"></mb-icon>
         <h2 class="Breadcrumb Breadcrumb--page" ng-if="!database.id">Add Database</h2>
         <h2 class="Breadcrumb Breadcrumb--page" ng-if="database.id">{{database.name}}</h2>
     </section>
diff --git a/resources/frontend_client/app/admin/databases/partials/database_edit_forms.html b/resources/frontend_client/app/admin/databases/partials/database_edit_forms.html
index 2fe1b6e9f297b43e5da6e2617a757160fa2e6ee8..3b498823bf6d2ec3da281362622fd435da0d7234 100644
--- a/resources/frontend_client/app/admin/databases/partials/database_edit_forms.html
+++ b/resources/frontend_client/app/admin/databases/partials/database_edit_forms.html
@@ -4,7 +4,7 @@
         <mb-form-label display-name="Database type" field-name="engine"></mb-form-label>
         <ul class="Form-offset full mt2" ng-show="!database.engine">
             <li class="DatabaseEngine" ng-repeat="(type, properties) in ENGINES">
-                <cv-check-icon class="DatabaseEngine-check" width="16px" height="16px"></cv-check-icon>
+                <mb-icon name="check" class="DatabaseEngine-check" width="16px" height="16px"></mb-icon>
                 <div ng-click="database.engine = type">
                     {{properties.name}}
                 </div>
@@ -12,9 +12,9 @@
         </ul>
         <div class="Form-offset mr4" ng-show="database.engine">
             <div class="DatabaseEngine DatabaseEngine--selected flex align-center">
-                <cv-check-icon class="DatabaseEngine-check" width="16px" height="16px"></cv-check-icon>
+                <mb-icon name="check" class="DatabaseEngine-check" width="16px" height="16px"></mb-icon>
                 <span class="flex-full">{{database.engine}}</span>
-                <cv-close-icon width="16px" height="16px" ng-click="database.engine = null"></cv-close-icon>
+                <mb-icon name="close" width="16px" height="16px" ng-click="database.engine = null"></mb-icon>
             </div>
         </div>
     </div>
diff --git a/resources/frontend_client/app/admin/databases/partials/database_table_list.html b/resources/frontend_client/app/admin/databases/partials/database_table_list.html
index cf15df90c4fd57620e4a284fc1de1a4574d44f22..c2aa47c4963ca279ab787862003016dbbb8ddda6 100644
--- a/resources/frontend_client/app/admin/databases/partials/database_table_list.html
+++ b/resources/frontend_client/app/admin/databases/partials/database_table_list.html
@@ -1,5 +1,5 @@
 <div class="border-bottom py1">
-    <cv-search-icon class="ml2 text-grey-2" width="18" height="18"></cv-search-icon>
+    <mb-icon name="search" class="ml2 text-grey-2" width="18" height="18"></mb-icon>
     <input class="Form-input Form-input--medium mx1" type="text" placeholder="Search for a table name" value="" ng-model="tableSearchText" autofocus>
 </div>
 <div class="DatabaseList" mb-scroll-shadow>
diff --git a/resources/frontend_client/app/admin/people/partials/people_add.html b/resources/frontend_client/app/admin/people/partials/people_add.html
index 2814581ba59f07e0400b0d6c2295eb3f2b2b9887..d4818c349204144eef78f0bd64f639c003dbdf6a 100644
--- a/resources/frontend_client/app/admin/people/partials/people_add.html
+++ b/resources/frontend_client/app/admin/people/partials/people_add.html
@@ -1,7 +1,7 @@
 <div class="wrapper">
     <section class="Breadcrumbs">
         <a class="Breadcrumb Breadcrumb--path" href="/admin/people/">People</a>
-        <cv-chevron-right-icon class="Breadcrumb-divider" width="12px" height="12px"></cv-chevron-right-icon>
+        <mb-icon name="chevronright" class="Breadcrumb-divider" width="12px" height="12px"></mb-icon>
         <h2 class="Breadcrumb Breadcrumb--page">Add person</h2>
     </section>
 
diff --git a/resources/frontend_client/app/admin/settings/partials/settings.html b/resources/frontend_client/app/admin/settings/partials/settings.html
index acbf54fb17ff3d71af7772c39d04c0ff231d44df..21925e800d7fa7eb464c6bc29f7bb36b0e7fe19d 100644
--- a/resources/frontend_client/app/admin/settings/partials/settings.html
+++ b/resources/frontend_client/app/admin/settings/partials/settings.html
@@ -16,7 +16,7 @@
             <tbody>
                 <tr ng-show="!settings">
                     <td colspan=4>
-                        <cv-loading-icon></cv-loading-icon>
+                        <mb-loading-icon></mb-loading-icon>
                         <h3>Loading ...</h3>
                     </td>
                 </tr>
diff --git a/resources/frontend_client/app/auth/partials/forgot_password.html b/resources/frontend_client/app/auth/partials/forgot_password.html
index 3397ade535b0869691a5e3db4afeb089492f6e4c..5158862fa290115c3022917d95a96f5ae1c9bb0b 100644
--- a/resources/frontend_client/app/auth/partials/forgot_password.html
+++ b/resources/frontend_client/app/auth/partials/forgot_password.html
@@ -1,15 +1,8 @@
 <div class="bg-white flex flex-column layout-centered full-height">
     <div class="wrapper">
         <div class="Login-wrapper Grid Grid--1of2">
-            <div class="Grid-cell flex layout-centered">
-                <svg width="66px" height="85px" viewBox="0 0 66 85" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-                    <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
-                        <g id="logo"fill="#4990E2">
-                            <path d="M46.8253288,70.4935014 C49.5764899,70.4935014 51.8067467,68.1774705 51.8067467,65.3205017 C51.8067467,62.4635329 49.5764899,60.147502 46.8253288,60.147502 C44.0741676,60.147502 41.8439108,62.4635329 41.8439108,65.3205017 C41.8439108,68.1774705 44.0741676,70.4935014 46.8253288,70.4935014 Z M32.8773585,84.9779005 C35.6285197,84.9779005 37.8587764,82.6618697 37.8587764,79.8049008 C37.8587764,76.947932 35.6285197,74.6319011 32.8773585,74.6319011 C30.1261973,74.6319011 27.8959405,76.947932 27.8959405,79.8049008 C27.8959405,82.6618697 30.1261973,84.9779005 32.8773585,84.9779005 Z M32.8773585,70.4935014 C35.6285197,70.4935014 37.8587764,68.1774705 37.8587764,65.3205017 C37.8587764,62.4635329 35.6285197,60.147502 32.8773585,60.147502 C30.1261973,60.147502 27.8959405,62.4635329 27.8959405,65.3205017 C27.8959405,68.1774705 30.1261973,70.4935014 32.8773585,70.4935014 Z M18.9293882,70.4935014 C21.6805494,70.4935014 23.9108062,68.1774705 23.9108062,65.3205017 C23.9108062,62.4635329 21.6805494,60.147502 18.9293882,60.147502 C16.1782271,60.147502 13.9479703,62.4635329 13.9479703,65.3205017 C13.9479703,68.1774705 16.1782271,70.4935014 18.9293882,70.4935014 Z M46.8253288,56.0091023 C49.5764899,56.0091023 51.8067467,53.6930714 51.8067467,50.8361026 C51.8067467,47.9791337 49.5764899,45.6631029 46.8253288,45.6631029 C44.0741676,45.6631029 41.8439108,47.9791337 41.8439108,50.8361026 C41.8439108,53.6930714 44.0741676,56.0091023 46.8253288,56.0091023 Z M18.9293882,56.0091023 C21.6805494,56.0091023 23.9108062,53.6930714 23.9108062,50.8361026 C23.9108062,47.9791337 21.6805494,45.6631029 18.9293882,45.6631029 C16.1782271,45.6631029 13.9479703,47.9791337 13.9479703,50.8361026 C13.9479703,53.6930714 16.1782271,56.0091023 18.9293882,56.0091023 Z M46.8253288,26.8995984 C49.5764899,26.8995984 51.8067467,24.5835675 51.8067467,21.7265987 C51.8067467,18.8696299 49.5764899,16.553599 46.8253288,16.553599 C44.0741676,16.553599 41.8439108,18.8696299 41.8439108,21.7265987 C41.8439108,24.5835675 44.0741676,26.8995984 46.8253288,26.8995984 Z M32.8773585,41.5247031 C35.6285197,41.5247031 37.8587764,39.2086723 37.8587764,36.3517034 C37.8587764,33.4947346 35.6285197,31.1787037 32.8773585,31.1787037 C30.1261973,31.1787037 27.8959405,33.4947346 27.8959405,36.3517034 C27.8959405,39.2086723 30.1261973,41.5247031 32.8773585,41.5247031 Z M32.8773585,10.3459994 C35.6285197,10.3459994 37.8587764,8.02996853 37.8587764,5.17299969 C37.8587764,2.31603085 35.6285197,0 32.8773585,0 C30.1261973,0 27.8959405,2.31603085 27.8959405,5.17299969 C27.8959405,8.02996853 30.1261973,10.3459994 32.8773585,10.3459994 Z M32.8773585,26.8995984 C35.6285197,26.8995984 37.8587764,24.5835675 37.8587764,21.7265987 C37.8587764,18.8696299 35.6285197,16.553599 32.8773585,16.553599 C30.1261973,16.553599 27.8959405,18.8696299 27.8959405,21.7265987 C27.8959405,24.5835675 30.1261973,26.8995984 32.8773585,26.8995984 Z M18.9293882,26.8995984 C21.6805494,26.8995984 23.9108062,24.5835675 23.9108062,21.7265987 C23.9108062,18.8696299 21.6805494,16.553599 18.9293882,16.553599 C16.1782271,16.553599 13.9479703,18.8696299 13.9479703,21.7265987 C13.9479703,24.5835675 16.1782271,26.8995984 18.9293882,26.8995984 Z" id="Oval-14" opacity="0.2"></path>
-                            <path d="M60.773299,70.4935014 C63.5244602,70.4935014 65.754717,68.1774705 65.754717,65.3205017 C65.754717,62.4635329 63.5244602,60.147502 60.773299,60.147502 C58.0221379,60.147502 55.7918811,62.4635329 55.7918811,65.3205017 C55.7918811,68.1774705 58.0221379,70.4935014 60.773299,70.4935014 Z M4.98141795,70.3527958 C7.73257912,70.3527958 9.96283591,68.0367649 9.96283591,65.1797961 C9.96283591,62.3228273 7.73257912,60.0067964 4.98141795,60.0067964 C2.23025679,60.0067964 0,62.3228273 0,65.1797961 C0,68.0367649 2.23025679,70.3527958 4.98141795,70.3527958 Z M60.773299,56.0091023 C63.5244602,56.0091023 65.754717,53.6930714 65.754717,50.8361026 C65.754717,47.9791337 63.5244602,45.6631029 60.773299,45.6631029 C58.0221379,45.6631029 55.7918811,47.9791337 55.7918811,50.8361026 C55.7918811,53.6930714 58.0221379,56.0091023 60.773299,56.0091023 Z M32.8773585,56.0091023 C35.6285197,56.0091023 37.8587764,53.6930714 37.8587764,50.8361026 C37.8587764,47.9791337 35.6285197,45.6631029 32.8773585,45.6631029 C30.1261973,45.6631029 27.8959405,47.9791337 27.8959405,50.8361026 C27.8959405,53.6930714 30.1261973,56.0091023 32.8773585,56.0091023 Z M4.98141795,55.8683967 C7.73257912,55.8683967 9.96283591,53.5523658 9.96283591,50.695397 C9.96283591,47.8384281 7.73257912,45.5223973 4.98141795,45.5223973 C2.23025679,45.5223973 0,47.8384281 0,50.695397 C0,53.5523658 2.23025679,55.8683967 4.98141795,55.8683967 Z M60.773299,41.5247031 C63.5244602,41.5247031 65.754717,39.2086723 65.754717,36.3517034 C65.754717,33.4947346 63.5244602,31.1787037 60.773299,31.1787037 C58.0221379,31.1787037 55.7918811,33.4947346 55.7918811,36.3517034 C55.7918811,39.2086723 58.0221379,41.5247031 60.773299,41.5247031 Z M46.8253288,41.5247031 C49.5764899,41.5247031 51.8067467,39.2086723 51.8067467,36.3517034 C51.8067467,33.4947346 49.5764899,31.1787037 46.8253288,31.1787037 C44.0741676,31.1787037 41.8439108,33.4947346 41.8439108,36.3517034 C41.8439108,39.2086723 44.0741676,41.5247031 46.8253288,41.5247031 Z M60.773299,26.8995984 C63.5244602,26.8995984 65.754717,24.5835675 65.754717,21.7265987 C65.754717,18.8696299 63.5244602,16.553599 60.773299,16.553599 C58.0221379,16.553599 55.7918811,18.8696299 55.7918811,21.7265987 C55.7918811,24.5835675 58.0221379,26.8995984 60.773299,26.8995984 Z M18.9293882,41.5247031 C21.6805494,41.5247031 23.9108062,39.2086723 23.9108062,36.3517034 C23.9108062,33.4947346 21.6805494,31.1787037 18.9293882,31.1787037 C16.1782271,31.1787037 13.9479703,33.4947346 13.9479703,36.3517034 C13.9479703,39.2086723 16.1782271,41.5247031 18.9293882,41.5247031 Z M4.98141795,41.3839975 C7.73257912,41.3839975 9.96283591,39.0679667 9.96283591,36.2109978 C9.96283591,33.354029 7.73257912,31.0379981 4.98141795,31.0379981 C2.23025679,31.0379981 0,33.354029 0,36.2109978 C0,39.0679667 2.23025679,41.3839975 4.98141795,41.3839975 Z M4.98141795,26.8995984 C7.73257912,26.8995984 9.96283591,24.5835675 9.96283591,21.7265987 C9.96283591,18.8696299 7.73257912,16.553599 4.98141795,16.553599 C2.23025679,16.553599 0,18.8696299 0,21.7265987 C0,24.5835675 2.23025679,26.8995984 4.98141795,26.8995984 Z" id="Oval-14" sketch:type="MSShapeGroup"></path>
-                        </g>
-                    </g>
-                </svg>
+            <div class="Grid-cell flex layout-centered text-brand">
+                <mb-logo-icon width="65px" height="85px"></mb-logo-icon>
             </div>
             <div class="Grid-cell" ng-show="!sentNotification">
                 <form class="ForgotForm bg-white Form-new bordered rounded shadowed" name="form" novalidate>
@@ -33,7 +26,7 @@
             <div class="Grid-cell" ng-show="sentNotification">
                 <div class="SuccessGroup bg-white bordered rounded shadowed">
                     <div class="SuccessMark">
-                        <cv-check-icon></cv-check-icon>
+                        <mb-icon name="check"></mb-icon>
                     </div>
                     <p class="SuccessText">Check your email for instructions on how to reset your password.</p>
                 </div>
diff --git a/resources/frontend_client/app/auth/partials/login.html b/resources/frontend_client/app/auth/partials/login.html
index ad12630610d3faf47086e39fa8156b11e55f5916..870cc63892592b09c932da1a5acda3001caa78c3 100644
--- a/resources/frontend_client/app/auth/partials/login.html
+++ b/resources/frontend_client/app/auth/partials/login.html
@@ -1,15 +1,8 @@
 <div class="bg-white flex flex-column layout-centered full-height">
     <div class="wrapper">
         <div class="Login-wrapper Grid Grid--1of2">
-            <div class="Grid-cell flex layout-centered">
-                <svg width="66px" height="85px" viewBox="0 0 66 85" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-                    <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
-                        <g id="logo"fill="#4990E2">
-                            <path d="M46.8253288,70.4935014 C49.5764899,70.4935014 51.8067467,68.1774705 51.8067467,65.3205017 C51.8067467,62.4635329 49.5764899,60.147502 46.8253288,60.147502 C44.0741676,60.147502 41.8439108,62.4635329 41.8439108,65.3205017 C41.8439108,68.1774705 44.0741676,70.4935014 46.8253288,70.4935014 Z M32.8773585,84.9779005 C35.6285197,84.9779005 37.8587764,82.6618697 37.8587764,79.8049008 C37.8587764,76.947932 35.6285197,74.6319011 32.8773585,74.6319011 C30.1261973,74.6319011 27.8959405,76.947932 27.8959405,79.8049008 C27.8959405,82.6618697 30.1261973,84.9779005 32.8773585,84.9779005 Z M32.8773585,70.4935014 C35.6285197,70.4935014 37.8587764,68.1774705 37.8587764,65.3205017 C37.8587764,62.4635329 35.6285197,60.147502 32.8773585,60.147502 C30.1261973,60.147502 27.8959405,62.4635329 27.8959405,65.3205017 C27.8959405,68.1774705 30.1261973,70.4935014 32.8773585,70.4935014 Z M18.9293882,70.4935014 C21.6805494,70.4935014 23.9108062,68.1774705 23.9108062,65.3205017 C23.9108062,62.4635329 21.6805494,60.147502 18.9293882,60.147502 C16.1782271,60.147502 13.9479703,62.4635329 13.9479703,65.3205017 C13.9479703,68.1774705 16.1782271,70.4935014 18.9293882,70.4935014 Z M46.8253288,56.0091023 C49.5764899,56.0091023 51.8067467,53.6930714 51.8067467,50.8361026 C51.8067467,47.9791337 49.5764899,45.6631029 46.8253288,45.6631029 C44.0741676,45.6631029 41.8439108,47.9791337 41.8439108,50.8361026 C41.8439108,53.6930714 44.0741676,56.0091023 46.8253288,56.0091023 Z M18.9293882,56.0091023 C21.6805494,56.0091023 23.9108062,53.6930714 23.9108062,50.8361026 C23.9108062,47.9791337 21.6805494,45.6631029 18.9293882,45.6631029 C16.1782271,45.6631029 13.9479703,47.9791337 13.9479703,50.8361026 C13.9479703,53.6930714 16.1782271,56.0091023 18.9293882,56.0091023 Z M46.8253288,26.8995984 C49.5764899,26.8995984 51.8067467,24.5835675 51.8067467,21.7265987 C51.8067467,18.8696299 49.5764899,16.553599 46.8253288,16.553599 C44.0741676,16.553599 41.8439108,18.8696299 41.8439108,21.7265987 C41.8439108,24.5835675 44.0741676,26.8995984 46.8253288,26.8995984 Z M32.8773585,41.5247031 C35.6285197,41.5247031 37.8587764,39.2086723 37.8587764,36.3517034 C37.8587764,33.4947346 35.6285197,31.1787037 32.8773585,31.1787037 C30.1261973,31.1787037 27.8959405,33.4947346 27.8959405,36.3517034 C27.8959405,39.2086723 30.1261973,41.5247031 32.8773585,41.5247031 Z M32.8773585,10.3459994 C35.6285197,10.3459994 37.8587764,8.02996853 37.8587764,5.17299969 C37.8587764,2.31603085 35.6285197,0 32.8773585,0 C30.1261973,0 27.8959405,2.31603085 27.8959405,5.17299969 C27.8959405,8.02996853 30.1261973,10.3459994 32.8773585,10.3459994 Z M32.8773585,26.8995984 C35.6285197,26.8995984 37.8587764,24.5835675 37.8587764,21.7265987 C37.8587764,18.8696299 35.6285197,16.553599 32.8773585,16.553599 C30.1261973,16.553599 27.8959405,18.8696299 27.8959405,21.7265987 C27.8959405,24.5835675 30.1261973,26.8995984 32.8773585,26.8995984 Z M18.9293882,26.8995984 C21.6805494,26.8995984 23.9108062,24.5835675 23.9108062,21.7265987 C23.9108062,18.8696299 21.6805494,16.553599 18.9293882,16.553599 C16.1782271,16.553599 13.9479703,18.8696299 13.9479703,21.7265987 C13.9479703,24.5835675 16.1782271,26.8995984 18.9293882,26.8995984 Z" id="Oval-14" opacity="0.2"></path>
-                            <path d="M60.773299,70.4935014 C63.5244602,70.4935014 65.754717,68.1774705 65.754717,65.3205017 C65.754717,62.4635329 63.5244602,60.147502 60.773299,60.147502 C58.0221379,60.147502 55.7918811,62.4635329 55.7918811,65.3205017 C55.7918811,68.1774705 58.0221379,70.4935014 60.773299,70.4935014 Z M4.98141795,70.3527958 C7.73257912,70.3527958 9.96283591,68.0367649 9.96283591,65.1797961 C9.96283591,62.3228273 7.73257912,60.0067964 4.98141795,60.0067964 C2.23025679,60.0067964 0,62.3228273 0,65.1797961 C0,68.0367649 2.23025679,70.3527958 4.98141795,70.3527958 Z M60.773299,56.0091023 C63.5244602,56.0091023 65.754717,53.6930714 65.754717,50.8361026 C65.754717,47.9791337 63.5244602,45.6631029 60.773299,45.6631029 C58.0221379,45.6631029 55.7918811,47.9791337 55.7918811,50.8361026 C55.7918811,53.6930714 58.0221379,56.0091023 60.773299,56.0091023 Z M32.8773585,56.0091023 C35.6285197,56.0091023 37.8587764,53.6930714 37.8587764,50.8361026 C37.8587764,47.9791337 35.6285197,45.6631029 32.8773585,45.6631029 C30.1261973,45.6631029 27.8959405,47.9791337 27.8959405,50.8361026 C27.8959405,53.6930714 30.1261973,56.0091023 32.8773585,56.0091023 Z M4.98141795,55.8683967 C7.73257912,55.8683967 9.96283591,53.5523658 9.96283591,50.695397 C9.96283591,47.8384281 7.73257912,45.5223973 4.98141795,45.5223973 C2.23025679,45.5223973 0,47.8384281 0,50.695397 C0,53.5523658 2.23025679,55.8683967 4.98141795,55.8683967 Z M60.773299,41.5247031 C63.5244602,41.5247031 65.754717,39.2086723 65.754717,36.3517034 C65.754717,33.4947346 63.5244602,31.1787037 60.773299,31.1787037 C58.0221379,31.1787037 55.7918811,33.4947346 55.7918811,36.3517034 C55.7918811,39.2086723 58.0221379,41.5247031 60.773299,41.5247031 Z M46.8253288,41.5247031 C49.5764899,41.5247031 51.8067467,39.2086723 51.8067467,36.3517034 C51.8067467,33.4947346 49.5764899,31.1787037 46.8253288,31.1787037 C44.0741676,31.1787037 41.8439108,33.4947346 41.8439108,36.3517034 C41.8439108,39.2086723 44.0741676,41.5247031 46.8253288,41.5247031 Z M60.773299,26.8995984 C63.5244602,26.8995984 65.754717,24.5835675 65.754717,21.7265987 C65.754717,18.8696299 63.5244602,16.553599 60.773299,16.553599 C58.0221379,16.553599 55.7918811,18.8696299 55.7918811,21.7265987 C55.7918811,24.5835675 58.0221379,26.8995984 60.773299,26.8995984 Z M18.9293882,41.5247031 C21.6805494,41.5247031 23.9108062,39.2086723 23.9108062,36.3517034 C23.9108062,33.4947346 21.6805494,31.1787037 18.9293882,31.1787037 C16.1782271,31.1787037 13.9479703,33.4947346 13.9479703,36.3517034 C13.9479703,39.2086723 16.1782271,41.5247031 18.9293882,41.5247031 Z M4.98141795,41.3839975 C7.73257912,41.3839975 9.96283591,39.0679667 9.96283591,36.2109978 C9.96283591,33.354029 7.73257912,31.0379981 4.98141795,31.0379981 C2.23025679,31.0379981 0,33.354029 0,36.2109978 C0,39.0679667 2.23025679,41.3839975 4.98141795,41.3839975 Z M4.98141795,26.8995984 C7.73257912,26.8995984 9.96283591,24.5835675 9.96283591,21.7265987 C9.96283591,18.8696299 7.73257912,16.553599 4.98141795,16.553599 C2.23025679,16.553599 0,18.8696299 0,21.7265987 C0,24.5835675 2.23025679,26.8995984 4.98141795,26.8995984 Z" id="Oval-14" sketch:type="MSShapeGroup"></path>
-                        </g>
-                    </g>
-                </svg>
+            <div class="Grid-cell flex layout-centered text-brand">
+                <mb-logo-icon width="66px" height="85px"></mb-logo-icon>
             </div>
             <div class="Login-content Grid-cell">
                 <form class="Form-new bg-white bordered rounded shadowed" name="form" novalidate>
diff --git a/resources/frontend_client/app/auth/partials/password_reset.html b/resources/frontend_client/app/auth/partials/password_reset.html
index e0ec2fe6a981ce5556c491de933d0ae747452610..7c81b89505c76d81538ba442b66347d57aa226f3 100644
--- a/resources/frontend_client/app/auth/partials/password_reset.html
+++ b/resources/frontend_client/app/auth/partials/password_reset.html
@@ -1,15 +1,8 @@
 <div class="bg-white flex flex-column layout-centered full-height">
     <div class="wrapper">
         <div class="Login-wrapper Grid Grid--1of2">
-            <div class="Grid-cell flex layout-centered">
-                <svg width="66px" height="85px" viewBox="0 0 66 85" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-                    <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
-                        <g id="logo"fill="#4990E2">
-                            <path d="M46.8253288,70.4935014 C49.5764899,70.4935014 51.8067467,68.1774705 51.8067467,65.3205017 C51.8067467,62.4635329 49.5764899,60.147502 46.8253288,60.147502 C44.0741676,60.147502 41.8439108,62.4635329 41.8439108,65.3205017 C41.8439108,68.1774705 44.0741676,70.4935014 46.8253288,70.4935014 Z M32.8773585,84.9779005 C35.6285197,84.9779005 37.8587764,82.6618697 37.8587764,79.8049008 C37.8587764,76.947932 35.6285197,74.6319011 32.8773585,74.6319011 C30.1261973,74.6319011 27.8959405,76.947932 27.8959405,79.8049008 C27.8959405,82.6618697 30.1261973,84.9779005 32.8773585,84.9779005 Z M32.8773585,70.4935014 C35.6285197,70.4935014 37.8587764,68.1774705 37.8587764,65.3205017 C37.8587764,62.4635329 35.6285197,60.147502 32.8773585,60.147502 C30.1261973,60.147502 27.8959405,62.4635329 27.8959405,65.3205017 C27.8959405,68.1774705 30.1261973,70.4935014 32.8773585,70.4935014 Z M18.9293882,70.4935014 C21.6805494,70.4935014 23.9108062,68.1774705 23.9108062,65.3205017 C23.9108062,62.4635329 21.6805494,60.147502 18.9293882,60.147502 C16.1782271,60.147502 13.9479703,62.4635329 13.9479703,65.3205017 C13.9479703,68.1774705 16.1782271,70.4935014 18.9293882,70.4935014 Z M46.8253288,56.0091023 C49.5764899,56.0091023 51.8067467,53.6930714 51.8067467,50.8361026 C51.8067467,47.9791337 49.5764899,45.6631029 46.8253288,45.6631029 C44.0741676,45.6631029 41.8439108,47.9791337 41.8439108,50.8361026 C41.8439108,53.6930714 44.0741676,56.0091023 46.8253288,56.0091023 Z M18.9293882,56.0091023 C21.6805494,56.0091023 23.9108062,53.6930714 23.9108062,50.8361026 C23.9108062,47.9791337 21.6805494,45.6631029 18.9293882,45.6631029 C16.1782271,45.6631029 13.9479703,47.9791337 13.9479703,50.8361026 C13.9479703,53.6930714 16.1782271,56.0091023 18.9293882,56.0091023 Z M46.8253288,26.8995984 C49.5764899,26.8995984 51.8067467,24.5835675 51.8067467,21.7265987 C51.8067467,18.8696299 49.5764899,16.553599 46.8253288,16.553599 C44.0741676,16.553599 41.8439108,18.8696299 41.8439108,21.7265987 C41.8439108,24.5835675 44.0741676,26.8995984 46.8253288,26.8995984 Z M32.8773585,41.5247031 C35.6285197,41.5247031 37.8587764,39.2086723 37.8587764,36.3517034 C37.8587764,33.4947346 35.6285197,31.1787037 32.8773585,31.1787037 C30.1261973,31.1787037 27.8959405,33.4947346 27.8959405,36.3517034 C27.8959405,39.2086723 30.1261973,41.5247031 32.8773585,41.5247031 Z M32.8773585,10.3459994 C35.6285197,10.3459994 37.8587764,8.02996853 37.8587764,5.17299969 C37.8587764,2.31603085 35.6285197,0 32.8773585,0 C30.1261973,0 27.8959405,2.31603085 27.8959405,5.17299969 C27.8959405,8.02996853 30.1261973,10.3459994 32.8773585,10.3459994 Z M32.8773585,26.8995984 C35.6285197,26.8995984 37.8587764,24.5835675 37.8587764,21.7265987 C37.8587764,18.8696299 35.6285197,16.553599 32.8773585,16.553599 C30.1261973,16.553599 27.8959405,18.8696299 27.8959405,21.7265987 C27.8959405,24.5835675 30.1261973,26.8995984 32.8773585,26.8995984 Z M18.9293882,26.8995984 C21.6805494,26.8995984 23.9108062,24.5835675 23.9108062,21.7265987 C23.9108062,18.8696299 21.6805494,16.553599 18.9293882,16.553599 C16.1782271,16.553599 13.9479703,18.8696299 13.9479703,21.7265987 C13.9479703,24.5835675 16.1782271,26.8995984 18.9293882,26.8995984 Z" id="Oval-14" opacity="0.2"></path>
-                            <path d="M60.773299,70.4935014 C63.5244602,70.4935014 65.754717,68.1774705 65.754717,65.3205017 C65.754717,62.4635329 63.5244602,60.147502 60.773299,60.147502 C58.0221379,60.147502 55.7918811,62.4635329 55.7918811,65.3205017 C55.7918811,68.1774705 58.0221379,70.4935014 60.773299,70.4935014 Z M4.98141795,70.3527958 C7.73257912,70.3527958 9.96283591,68.0367649 9.96283591,65.1797961 C9.96283591,62.3228273 7.73257912,60.0067964 4.98141795,60.0067964 C2.23025679,60.0067964 0,62.3228273 0,65.1797961 C0,68.0367649 2.23025679,70.3527958 4.98141795,70.3527958 Z M60.773299,56.0091023 C63.5244602,56.0091023 65.754717,53.6930714 65.754717,50.8361026 C65.754717,47.9791337 63.5244602,45.6631029 60.773299,45.6631029 C58.0221379,45.6631029 55.7918811,47.9791337 55.7918811,50.8361026 C55.7918811,53.6930714 58.0221379,56.0091023 60.773299,56.0091023 Z M32.8773585,56.0091023 C35.6285197,56.0091023 37.8587764,53.6930714 37.8587764,50.8361026 C37.8587764,47.9791337 35.6285197,45.6631029 32.8773585,45.6631029 C30.1261973,45.6631029 27.8959405,47.9791337 27.8959405,50.8361026 C27.8959405,53.6930714 30.1261973,56.0091023 32.8773585,56.0091023 Z M4.98141795,55.8683967 C7.73257912,55.8683967 9.96283591,53.5523658 9.96283591,50.695397 C9.96283591,47.8384281 7.73257912,45.5223973 4.98141795,45.5223973 C2.23025679,45.5223973 0,47.8384281 0,50.695397 C0,53.5523658 2.23025679,55.8683967 4.98141795,55.8683967 Z M60.773299,41.5247031 C63.5244602,41.5247031 65.754717,39.2086723 65.754717,36.3517034 C65.754717,33.4947346 63.5244602,31.1787037 60.773299,31.1787037 C58.0221379,31.1787037 55.7918811,33.4947346 55.7918811,36.3517034 C55.7918811,39.2086723 58.0221379,41.5247031 60.773299,41.5247031 Z M46.8253288,41.5247031 C49.5764899,41.5247031 51.8067467,39.2086723 51.8067467,36.3517034 C51.8067467,33.4947346 49.5764899,31.1787037 46.8253288,31.1787037 C44.0741676,31.1787037 41.8439108,33.4947346 41.8439108,36.3517034 C41.8439108,39.2086723 44.0741676,41.5247031 46.8253288,41.5247031 Z M60.773299,26.8995984 C63.5244602,26.8995984 65.754717,24.5835675 65.754717,21.7265987 C65.754717,18.8696299 63.5244602,16.553599 60.773299,16.553599 C58.0221379,16.553599 55.7918811,18.8696299 55.7918811,21.7265987 C55.7918811,24.5835675 58.0221379,26.8995984 60.773299,26.8995984 Z M18.9293882,41.5247031 C21.6805494,41.5247031 23.9108062,39.2086723 23.9108062,36.3517034 C23.9108062,33.4947346 21.6805494,31.1787037 18.9293882,31.1787037 C16.1782271,31.1787037 13.9479703,33.4947346 13.9479703,36.3517034 C13.9479703,39.2086723 16.1782271,41.5247031 18.9293882,41.5247031 Z M4.98141795,41.3839975 C7.73257912,41.3839975 9.96283591,39.0679667 9.96283591,36.2109978 C9.96283591,33.354029 7.73257912,31.0379981 4.98141795,31.0379981 C2.23025679,31.0379981 0,33.354029 0,36.2109978 C0,39.0679667 2.23025679,41.3839975 4.98141795,41.3839975 Z M4.98141795,26.8995984 C7.73257912,26.8995984 9.96283591,24.5835675 9.96283591,21.7265987 C9.96283591,18.8696299 7.73257912,16.553599 4.98141795,16.553599 C2.23025679,16.553599 0,18.8696299 0,21.7265987 C0,24.5835675 2.23025679,26.8995984 4.98141795,26.8995984 Z" id="Oval-14" sketch:type="MSShapeGroup"></path>
-                        </g>
-                    </g>
-                </svg>
+            <div class="Grid-cell flex layout-centered text-brand">
+                <mb-logo-icon width="66px" height="85px"></mb-logo-icon>
             </div>
             <div class="Grid-cell" ng-show="!resetSuccess">
                 <form class="ForgotForm Login-wrapper bg-white Form-new bordered rounded shadowed" name="form" novalidate>
@@ -41,7 +34,7 @@
             <div class="Grid-cell" ng-show="resetSuccess">
                 <div class="SuccessGroup bg-white bordered rounded shadowed">
                     <div class="SuccessMark">
-                        <cv-check-icon></cv-check-icon>
+                        <mb-icon name="check"></mb-icon>
                     </div>
                     <p>Your password has been reset.</p>
                     <p><a href="/" class="Button Button--primary">Sign in with your new password</a></p>
diff --git a/resources/frontend_client/app/card/partials/_card_favorite.html b/resources/frontend_client/app/card/partials/_card_favorite.html
index e3fb269e1df2ea7ee557a4e24bd2a7f1901f83c5..65e92489af60dfabad75d1981cfe58786f485553 100644
--- a/resources/frontend_client/app/card/partials/_card_favorite.html
+++ b/resources/frontend_client/app/card/partials/_card_favorite.html
@@ -1,3 +1,3 @@
 <a href="#" ng-click="toggleFavorite()">
-    <cv-star-icon width="18px" height="18px" ng-class="{'text-grey-1' : !favorite}"></cv-star-icon>
+    <mb-icon name="star" width="18px" height="18px" ng-class="{'text-grey-1' : !favorite}"></mb-icon>
 </a>
diff --git a/resources/frontend_client/app/card/partials/_card_heading.html b/resources/frontend_client/app/card/partials/_card_heading.html
index bd52831afd8b5a6fecd371f8eb6d9993a7706fcb..920fa56782529b833232ae1dcb8ad24445cd4bb0 100644
--- a/resources/frontend_client/app/card/partials/_card_heading.html
+++ b/resources/frontend_client/app/card/partials/_card_heading.html
@@ -5,7 +5,7 @@
             </cv-card-favorite-button>
             <div class="Dropdown inline-block" dropdown on-toggle="toggled(open)">
                 <a class="text-grey-1 mx1" href="#" dropdown-toggle>
-                    <cv-chevron-down-icon width="18px" height="18px"></cv-chevron-down-icon>
+                    <mb-icon name="chevrondown" width="18px" height="18px"></mb-icon>
                 </a>
                 <ul class="Dropdown-content right">
                     <span ng-if="!cardSettings || (cardSettings.allowCardPermalink || cardSettings.allowSend)">
diff --git a/resources/frontend_client/app/components/icons/add.html b/resources/frontend_client/app/components/icons/add.html
deleted file mode 100644
index d2e52af1c744c478bd939b9e7094d2ba1b0768d1..0000000000000000000000000000000000000000
--- a/resources/frontend_client/app/components/icons/add.html
+++ /dev/null
@@ -1,3 +0,0 @@
-<svg id="add" viewBox="0 0 32 32" fill="currentcolor" ng-attr-width="{{width}}" ng-attr-height="{{height}}">
-    <path d="M19,13 L19,2 L14,2 L14,13 L2,13 L2,18 L14,18 L14,30 L19,30 L19,18 L30,18 L30,13 L19,13 Z"></path>
-</svg>
diff --git a/resources/frontend_client/app/components/icons/cards.html b/resources/frontend_client/app/components/icons/cards.html
deleted file mode 100644
index d1a3ddb69fdfe55d185d923239f2444f9fe2b8da..0000000000000000000000000000000000000000
--- a/resources/frontend_client/app/components/icons/cards.html
+++ /dev/null
@@ -1,3 +0,0 @@
-<svg id="cards" viewBox="0 0 32 32" fill="currentcolor" ng-attr-width="{{width}}" ng-attr-height="{{height}}">
-    <path d="M16.5,11 C16.1340991,11 15.7865579,10.9213927 15.4733425,10.7801443 L7.35245972,21.8211652 C7.7548404,22.264891 8,22.8538155 8,23.5 C8,24.8807119 6.88071187,26 5.5,26 C4.11928813,26 3,24.8807119 3,23.5 C3,22.1192881 4.11928813,21 5.5,21 C5.87370843,21 6.22826528,21.0819977 6.5466604,21.2289829 L14.6623495,10.1950233 C14.2511829,9.74948188 14,9.15407439 14,8.5 C14,7.11928813 15.1192881,6 16.5,6 C17.8807119,6 19,7.11928813 19,8.5 C19,8.96980737 18.8704088,9.4093471 18.6450228,9.78482291 L25.0405495,15.4699905 C25.4512188,15.1742245 25.9552632,15 26.5,15 C27.8807119,15 29,16.1192881 29,17.5 C29,18.8807119 27.8807119,20 26.5,20 C25.1192881,20 24,18.8807119 24,17.5 C24,17.0256697 24.1320984,16.5821926 24.3615134,16.2043506 L17.9697647,10.5225413 C17.5572341,10.8228405 17.0493059,11 16.5,11 Z M5.5,25 C6.32842712,25 7,24.3284271 7,23.5 C7,22.6715729 6.32842712,22 5.5,22 C4.67157288,22 4,22.6715729 4,23.5 C4,24.3284271 4.67157288,25 5.5,25 Z M26.5,19 C27.3284271,19 28,18.3284271 28,17.5 C28,16.6715729 27.3284271,16 26.5,16 C25.6715729,16 25,16.6715729 25,17.5 C25,18.3284271 25.6715729,19 26.5,19 Z M16.5,10 C17.3284271,10 18,9.32842712 18,8.5 C18,7.67157288 17.3284271,7 16.5,7 C15.6715729,7 15,7.67157288 15,8.5 C15,9.32842712 15.6715729,10 16.5,10 Z"></path>
-</svg>
diff --git a/resources/frontend_client/app/components/icons/check.html b/resources/frontend_client/app/components/icons/check.html
deleted file mode 100644
index e4e0189b4c5500914aad75adeb80bcfca63070a9..0000000000000000000000000000000000000000
--- a/resources/frontend_client/app/components/icons/check.html
+++ /dev/null
@@ -1,3 +0,0 @@
-<svg id="check" viewBox="0 0 32 32" fill="currentcolor" ng-attr-width="{{width}}" ng-attr-height="{{height}}">
-    <path d="M1 14 L5 10 L13 18 L27 4 L31 8 L13 26 z "></path>
-</svg>
diff --git a/resources/frontend_client/app/components/icons/chevrondown.html b/resources/frontend_client/app/components/icons/chevrondown.html
deleted file mode 100644
index e02f857f7ff31894598e6e507308b86b80c739cc..0000000000000000000000000000000000000000
--- a/resources/frontend_client/app/components/icons/chevrondown.html
+++ /dev/null
@@ -1,3 +0,0 @@
-<svg id="chevron-down" viewBox="0 0 32 32" fill="currentcolor" ng-attr-width="{{width}}" ng-attr-height="{{height}}">
-    <path d="M1 12 L16 26 L31 12 L27 8 L16 18 L5 8 z "></path>
-</svg>
diff --git a/resources/frontend_client/app/components/icons/chevronright.html b/resources/frontend_client/app/components/icons/chevronright.html
deleted file mode 100644
index 25cce0f3d9a37197160c02422cd71fcd0f182a4a..0000000000000000000000000000000000000000
--- a/resources/frontend_client/app/components/icons/chevronright.html
+++ /dev/null
@@ -1,3 +0,0 @@
-<svg id="chevron-right" viewBox="0 0 32 32" fill="currentcolor" ng-attr-width="{{width}}" ng-attr-height="{{height}}">
-    <path d="M12 1 L26 16 L12 31 L8 27 L18 16 L8 5 z "></path>
-</svg>
diff --git a/resources/frontend_client/app/components/icons/close.html b/resources/frontend_client/app/components/icons/close.html
deleted file mode 100644
index 9f2575dbda5a9a0b4271173f0f30a6a7e452d273..0000000000000000000000000000000000000000
--- a/resources/frontend_client/app/components/icons/close.html
+++ /dev/null
@@ -1,3 +0,0 @@
-<svg id="close" viewBox="0 0 32 32" fill="currentcolor" ng-attr-width="{{width}}" ng-attr-height="{{height}}">
-    <path d="M4 8 L8 4 L16 12 L24 4 L28 8 L20 16 L28 24 L24 28 L16 20 L8 28 L4 24 L12 16 z "></path>
-</svg>
diff --git a/resources/frontend_client/app/components/icons/dashboards.html b/resources/frontend_client/app/components/icons/dashboards.html
deleted file mode 100644
index 5cc0d992df7f7041a0e7d006bec071190ca129fc..0000000000000000000000000000000000000000
--- a/resources/frontend_client/app/components/icons/dashboards.html
+++ /dev/null
@@ -1,3 +0,0 @@
-<svg id="dashboards" viewBox="0 0 32 32" fill="currentcolor" ng-attr-width="{{width}}" ng-attr-height="{{height}}">
-    <path d="M17,5.49100518 L17,10.5089948 C17,10.7801695 17.2276528,11 17.5096495,11 L26.4903505,11 C26.7718221,11 27,10.7721195 27,10.5089948 L27,5.49100518 C27,5.21983051 26.7723472,5 26.4903505,5 L17.5096495,5 C17.2281779,5 17,5.22788048 17,5.49100518 Z M18.5017326,14 C18.225722,14 18,13.77328 18,13.4982674 L18,26.5017326 C18,26.225722 18.22672,26 18.5017326,26 L5.49826741,26 C5.77427798,26 6,26.22672 6,26.5017326 L6,13.4982674 C6,13.774278 5.77327997,14 5.49826741,14 L18.5017326,14 Z M14.4903505,6 C14.2278953,6 14,5.78028538 14,5.49100518 L14,10.5089948 C14,10.2167107 14.2224208,10 14.4903505,10 L5.50964952,10 C5.77210473,10 6,10.2197146 6,10.5089948 L6,5.49100518 C6,5.78328929 5.77757924,6 5.50964952,6 L14.4903505,6 Z M26.5089948,22 C26.2251201,22 26,21.7774008 26,21.4910052 L26,26.5089948 C26,26.2251201 26.2225992,26 26.5089948,26 L21.4910052,26 C21.7748799,26 22,26.2225992 22,26.5089948 L22,21.4910052 C22,21.7748799 21.7774008,22 21.4910052,22 L26.5089948,22 Z M26.5089948,14 C26.2251201,14 26,13.7774008 26,13.4910052 L26,18.5089948 C26,18.2251201 26.2225992,18 26.5089948,18 L21.4910052,18 C21.7748799,18 22,18.2225992 22,18.5089948 L22,13.4910052 C22,13.7748799 21.7774008,14 21.4910052,14 L26.5089948,14 Z M26.4903505,6 C26.2278953,6 26,5.78028538 26,5.49100518 L26,10.5089948 C26,10.2167107 26.2224208,10 26.4903505,10 L17.5096495,10 C17.7721047,10 18,10.2197146 18,10.5089948 L18,5.49100518 C18,5.78328929 17.7775792,6 17.5096495,6 L26.4903505,6 Z M5,13.4982674 L5,26.5017326 C5,26.7769181 5.21990657,27 5.49826741,27 L18.5017326,27 C18.7769181,27 19,26.7800934 19,26.5017326 L19,13.4982674 C19,13.2230819 18.7800934,13 18.5017326,13 L5.49826741,13 C5.22308192,13 5,13.2199066 5,13.4982674 Z M5,5.49100518 L5,10.5089948 C5,10.7801695 5.22765279,11 5.50964952,11 L14.4903505,11 C14.7718221,11 15,10.7721195 15,10.5089948 L15,5.49100518 C15,5.21983051 14.7723472,5 14.4903505,5 L5.50964952,5 C5.22817786,5 5,5.22788048 5,5.49100518 Z M21,21.4910052 L21,26.5089948 C21,26.7801695 21.2278805,27 21.4910052,27 L26.5089948,27 C26.7801695,27 27,26.7721195 27,26.5089948 L27,21.4910052 C27,21.2198305 26.7721195,21 26.5089948,21 L21.4910052,21 C21.2198305,21 21,21.2278805 21,21.4910052 Z M21,13.4910052 L21,18.5089948 C21,18.7801695 21.2278805,19 21.4910052,19 L26.5089948,19 C26.7801695,19 27,18.7721195 27,18.5089948 L27,13.4910052 C27,13.2198305 26.7721195,13 26.5089948,13 L21.4910052,13 C21.2198305,13 21,13.2278805 21,13.4910052 Z"></path>
-</svg>
diff --git a/resources/frontend_client/app/components/icons/explore.html b/resources/frontend_client/app/components/icons/explore.html
deleted file mode 100644
index f76beb81ed4b7ac6d1263b7ff6256d78d75f1891..0000000000000000000000000000000000000000
--- a/resources/frontend_client/app/components/icons/explore.html
+++ /dev/null
@@ -1,3 +0,0 @@
-<svg id="explore" viewBox="0 0 32 32" fill="currentcolor" ng-attr-width="{{width}}" ng-attr-height="{{height}}">
-    <path d="M16.4796545,16.298957 L16.4802727,23.0580389 L16.4802727,23.0580389 C17.3528782,23.2731238 18,24.0609902 18,25 C18,26.1045695 17.1045695,27 16,27 C14.8954305,27 14,26.1045695 14,25 C14,24.0751922 14.6276951,23.2969904 15.4802906,23.0681896 L15.4796772,16.3617812 L15.4796772,16.3617812 L9.42693239,19.2936488 C9.54250354,19.9090101 9.36818637,20.5691625 8.90013616,21.0538426 C8.13283771,21.8484034 6.86670062,21.8705039 6.07213982,21.1032055 C5.27757902,20.335907 5.25547851,19.06977 6.02277696,18.2752092 C6.79007541,17.4806484 8.0562125,17.4585478 8.8507733,18.2258463 C8.90464955,18.277874 8.95497425,18.3321952 9.00174214,18.3885073 L14.8957415,15.5335339 L8.95698016,12.663638 C8.54316409,13.1288103 7.91883307,13.3945629 7.25239963,13.3245179 C6.15388108,13.2090589 5.35695382,12.2249357 5.47241277,11.1264172 C5.58787172,10.0278986 6.57199493,9.23097136 7.67051349,9.34643031 C8.76903204,9.46188927 9.5659593,10.4460125 9.45050035,11.544531 C9.44231425,11.6224166 9.42976147,11.6987861 9.41311084,11.7734218 L15.4795257,14.705006 L15.4789062,7.93143834 C14.6270158,7.70216703 14,6.9243072 14,6 C14,4.8954305 14.8954305,4 16,4 C17.1045695,4 18,4.8954305 18,6 C18,6.93950562 17.3521946,7.72770818 16.4788902,7.94230133 L16.4795143,14.7663758 L22.5940736,11.8045661 C22.4397082,11.1620316 22.6068068,10.4567329 23.0998638,9.94615736 C23.8671623,9.15159656 25.1332994,9.12949606 25.9278602,9.8967945 C26.722421,10.664093 26.7445215,11.93023 25.977223,12.7247908 C25.2099246,13.5193516 23.9437875,13.5414522 23.1492267,12.7741537 C23.120046,12.7459743 23.0919072,12.717122 23.0648111,12.687645 L17.1917924,15.5324558 L23.0283963,18.3529842 C23.4420438,17.8775358 24.073269,17.604607 24.7476004,17.6754821 C25.8461189,17.7909411 26.6430462,18.7750643 26.5275872,19.8735828 C26.4121283,20.9721014 25.4280051,21.7690286 24.3294865,21.6535697 C23.230968,21.5381107 22.4340407,20.5539875 22.5494996,19.455469 C22.5569037,19.3850239 22.56788,19.315819 22.5822296,19.2480155 L16.4796545,16.298957 Z M16.0651172,6.99791382 C16.5870517,6.96436642 17,6.53040783 17,6 C17,5.44771525 16.5522847,5 16,5 C15.4477153,5 15,5.44771525 15,6 C15,6.53446591 15.4192913,6.9710011 15.9468816,6.99861337 L16.0651172,6.99791382 L16.0651172,6.99791382 Z M16,26 C16.5522847,26 17,25.5522847 17,25 C17,24.4477153 16.5522847,24 16,24 C15.4477153,24 15,24.4477153 15,25 C15,25.5522847 15.4477153,26 16,26 Z M6.56266251,20.102897 C6.80476821,20.5992873 7.40343746,20.8054256 7.89982771,20.5633199 C8.39621795,20.3212142 8.60235631,19.722545 8.36025061,19.2261547 C8.11814491,18.7297645 7.51947566,18.5236261 7.02308541,18.7657318 C6.52669517,19.0078375 6.32055681,19.6065068 6.56266251,20.102897 Z M23.6397494,11.7738453 C23.8818551,12.2702355 24.4805243,12.4763739 24.9769146,12.2342682 C25.4733048,11.9921625 25.6794432,11.3934932 25.4373375,10.897103 C25.1952318,10.4007127 24.5965625,10.1945744 24.1001723,10.4366801 C23.603782,10.6787858 23.3976437,11.277455 23.6397494,11.7738453 Z M25.4373375,20.102897 C25.6794432,19.6065068 25.4733048,19.0078375 24.9769146,18.7657318 C24.4805243,18.5236261 23.8818551,18.7297645 23.6397494,19.2261547 C23.3976437,19.722545 23.603782,20.3212142 24.1001723,20.5633199 C24.5965625,20.8054256 25.1952318,20.5992873 25.4373375,20.102897 Z M8.36025061,11.7738453 C8.60235631,11.277455 8.39621795,10.6787858 7.89982771,10.4366801 C7.40343746,10.1945744 6.80476821,10.4007127 6.56266251,10.897103 C6.32055681,11.3934932 6.52669517,11.9921625 7.02308541,12.2342682 C7.51947566,12.4763739 8.11814491,12.2702355 8.36025061,11.7738453 Z"></path>
-</svg>
diff --git a/resources/frontend_client/app/components/icons/gear.html b/resources/frontend_client/app/components/icons/gear.html
deleted file mode 100644
index 6b25c63fa6706ac35d25f21257ab78ed396a6ad5..0000000000000000000000000000000000000000
--- a/resources/frontend_client/app/components/icons/gear.html
+++ /dev/null
@@ -1,3 +0,0 @@
-<svg id="cog" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" fill="currentcolor" ng-attr-width="{{width}}" ng-attr-height="{{height}}">
-    <path d="M14 0 H18 L19 6 L20.707 6.707 L26 3.293 L28.707 6 L25.293 11.293 L26 13 L32 14 V18 L26 19 L25.293 20.707 L28.707 26 L26 28.707 L20.707 25.293 L19 26 L18 32 L14 32 L13 26 L11.293 25.293 L6 28.707 L3.293 26 L6.707 20.707 L6 19 L0 18 L0 14 L6 13 L6.707 11.293 L3.293 6 L6 3.293 L11.293 6.707 L13 6 L14 0 z M16 10 A6 6 0 0 0 16 22 A6 6 0 0 0 16 10 "></path>
-</svg>
\ No newline at end of file
diff --git a/resources/frontend_client/app/components/icons/grid.html b/resources/frontend_client/app/components/icons/grid.html
deleted file mode 100644
index 4f9995e2c123bbd67695a355b73eafa80b4fac81..0000000000000000000000000000000000000000
--- a/resources/frontend_client/app/components/icons/grid.html
+++ /dev/null
@@ -1,3 +0,0 @@
-<svg id="grid" viewBox="0 0 32 32" fill="currentcolor" ng-attr-width="{{width}}" ng-attr-height="{{height}}">
-    <path d="M2 2 L10 2 L10 10 L2 10z M12 2 L20 2 L20 10 L12 10z M22 2 L30 2 L30 10 L22 10z M2 12 L10 12 L10 20 L2 20z M12 12 L20 12 L20 20 L12 20z M22 12 L30 12 L30 20 L22 20z M2 22 L10 22 L10 30 L2 30z M12 22 L20 22 L20 30 L12 30z M22 22 L30 22 L30 30 L22 30z "></path>
-</svg>
diff --git a/resources/frontend_client/app/components/icons/icons.js b/resources/frontend_client/app/components/icons/icons.js
index d6a62ef98bb38405b0793eed46a735c648c6fb1b..c461c3639a9ee13535cab8dacdea08086b534e7c 100644
--- a/resources/frontend_client/app/components/icons/icons.js
+++ b/resources/frontend_client/app/components/icons/icons.js
@@ -1,56 +1,70 @@
 'use strict';
+/* global ICON_PATHS */
+
+/*
+    GENERIC ICONS
+
+    USAGE:
+        Angular: <mb-icon name="<NAME FROM ICON_PATHS>" width="<PIXEL VALUE>" height="<PIXEL VALUE"></mb-icon>
+        React: <Icon name="<NAME FROM ICON_PATHS>" width="<PIXEL VALUE>" height="<PIXEL VALUE>" />
+*/
+
+angular.module('corvus.components')
+    .directive('mbIcon', function () {
+
+        return {
+            restrict: 'E',
+            template: '<svg class="Icon" id="{{name}}" viewBox="0 0 32 32" ng-attr-width="{{width}}" ng-attr-height="{{height}}" fill="currentcolor"><path ng-attr-d="{{path}}" /></svg>',
+            scope: {
+                width: '@?',  // a value in PX to define the width of the icon
+                height: '@?', // a value in PX to define the height of the icon
+                name: '@',    // the name of the icon to be referended from the ICON_PATHS object
+                path: '@'
+            },
+            compile: function (element, attrs) {
+                var icon = ICON_PATHS[attrs.name];
+
+                // set defaults for width/height in case no width or height are specified
+                attrs.width = attrs.width || '32px';
+                attrs.height = attrs.height || '32px';
+                attrs.path = icon;
+            }
+        };
+    });
+
+/* SPECIALTY ICONS */
 
-// wrap in a closure so we don't expose any of these functions to the outside world
 (function() {
-    // define our icons. currently uppercase to handle directive names properly
-    var icons = [
-        'Add',
-        'Cards',
-        'Close',
-        'ChevronDown',
-        'ChevronRight',
-        'Check',
-        'Dashboards',
-        'Explore',
-        'Gear',
-        'Grid',
-        'List',
-        'Loading',
-        'Logo',
-        'Search',
-        'Star'
-    ];
-
-    // ensure icons have proper defaults during the compile step if none are supplied
-    function iconCompile (element, attrs) {
-        var defaultWidth = '32px',
-            defaultHeight = '32px';
-
-        attrs.width = attrs.width || defaultWidth;
-        attrs.height = attrs.height || defaultHeight;
+    /* generic function to use for width and height defaults */
+    function iconCompile(element, attrs, defaultWidth, defaultHeight) {
+        attrs.width = attrs.width || '32px';
+        attrs.height = attrs.height || '32px';
     }
 
-    // generate the directive
-    function generateIconDirective (name) {
-        var templatePrefix = '/app/components/icons/';
-
-        return angular.module('corvus.components')
-                    .directive('cv' + name + 'Icon', function () {
-                        return {
-                            restrict: 'E',
-                            templateUrl: templatePrefix + name.toLowerCase() + '.html',
-                            scope: {
-                                width: '@?', // a value in PX to define the width of the icon
-                                height: '@?' // a value in PX to define the height of the icon
-                            },
-                            compile: iconCompile
-                        };
-                    });
-    }
+    var ICON_SCOPE = {
+        width: '@?',  // a value in PX to define the width of the icon
+        height: '@?', // a value in PX to define the height of the icon
+    };
 
-    // for every defined icon, generate a directive
-    for(var icon in icons) {
-        generateIconDirective(icons[icon]);
-    }
+
+    angular.module('corvus.components')
+        .directive('mbLogoIcon', function () {
+            return {
+                restrict: 'E',
+                templateUrl: '/app/components/icons/logo.html',
+                scope: ICON_SCOPE,
+                compile: iconCompile
+            };
+        });
+
+    angular.module('corvus.components')
+        .directive('mbLoadingIcon', function () {
+            return {
+                restrict: 'E',
+                templateUrl: '/app/components/icons/loading.html',
+                scope: ICON_SCOPE,
+                compile: iconCompile
+            };
+        });
 
 }());
diff --git a/resources/frontend_client/app/components/icons/list.html b/resources/frontend_client/app/components/icons/list.html
deleted file mode 100644
index 4e278455297a723c029f2f0180f9748858241b1c..0000000000000000000000000000000000000000
--- a/resources/frontend_client/app/components/icons/list.html
+++ /dev/null
@@ -1,3 +0,0 @@
-<svg id="list" viewBox="0 0 32 32" fill="currentcolor" ng-attr-width="{{width}}" ng-attr-height="{{height}}">
-    <path d="M3 8 A3 3 0 0 0 9 8 A3 3 0 0 0 3 8 M12 6 L28 6 L28 10 L12 10z M3 16 A3 3 0 0 0 9 16 A3 3 0 0 0 3 16 M12 14 L28 14 L28 18 L12 18z M3 24 A3 3 0 0 0 9 24 A3 3 0 0 0 3 24 M12 22 L28 22 L28 26 L12 26z "></path>
-</svg>
diff --git a/resources/frontend_client/app/components/icons/search.html b/resources/frontend_client/app/components/icons/search.html
deleted file mode 100644
index 48b37e96da7ec9c7d5164522953f8c6b2f843e96..0000000000000000000000000000000000000000
--- a/resources/frontend_client/app/components/icons/search.html
+++ /dev/null
@@ -1,3 +0,0 @@
-<svg id="search" viewBox="0 0 32 32" fill="currentcolor" ng-attr-width="{{width}}" ng-attr-height="{{height}}">
-    <path d="M12 0 A12 12 0 0 0 0 12 A12 12 0 0 0 12 24 A12 12 0 0 0 18.5 22.25 L28 32 L32 28 L22.25 18.5 A12 12 0 0 0 24 12 A12 12 0 0 0 12 0 M12 4 A8 8 0 0 1 12 20 A8 8 0 0 1 12 4  "></path>
-</svg>
diff --git a/resources/frontend_client/app/components/icons/star.html b/resources/frontend_client/app/components/icons/star.html
deleted file mode 100644
index 787bbd5d6afc28bd317f9b38589529c9e0e13b0f..0000000000000000000000000000000000000000
--- a/resources/frontend_client/app/components/icons/star.html
+++ /dev/null
@@ -1,3 +0,0 @@
-<svg id="star" viewBox="0 0 32 32" fill="currentcolor" ng-attr-width="{{width}}" ng-attr-height="{{height}}">
-    <path d="M16 0 L21 11 L32 12 L23 19 L26 31 L16 25 L6 31 L9 19 L0 12 L11 11 "></path>
-</svg>
diff --git a/resources/frontend_client/app/dashboard/partials/dash_view.html b/resources/frontend_client/app/dashboard/partials/dash_view.html
index f8deeadba720a5bd7a1fb9fb95fbbcb1588bdb19..81996a3bfe37f9e0a1269bc14c0146e4d4f87444 100644
--- a/resources/frontend_client/app/dashboard/partials/dash_view.html
+++ b/resources/frontend_client/app/dashboard/partials/dash_view.html
@@ -10,7 +10,7 @@
                     </label>
                 </div>
                 <a class="Button borderless" ng-click="toggleDashEditMode()" ng-if="dashboard.can_write && dashcards.length > 0">
-                    <cv-grid-icon width="16px" height="16px"></cv-grid-icon>
+                    <mb-icon name="grid" width="16px" height="16px"></mb-icon>
                     <span class="px1">{{editingText}}</span>
                 </a>
             </div>
@@ -24,7 +24,7 @@
 
         <div class="text-centered my4 py4" ng-if="!dashboardLoaded">
             <div class="my4 py4 text-brand">
-                <cv-loading-icon></cv-loading-icon>
+                <mb-loading-icon></mb-loading-icon>
                 <h1 class="text-normal text-grey-2">Loading...</h1>
             </div>
         </div>
@@ -39,9 +39,7 @@
                 <ul id="dashboard_list">
                     <li class="Dash-card" gridster-item="dashcard" ng-repeat="(index, dashcard) in dashcards">
                         <a class="DashCard-remove" ng-click="removeCard(index)">
-                            <span class="DashCard-removeIcon">
-                                <cv-close-icon width="12px" height="12px"></cv-close-icon>
-                            </span>
+                            <mb-icon name="close" class="DashCard-removeIcon"  width="12px" height="12px"></mb-icon>
                         </a>
                         <cv-card card="dashcard.card" card-data="dashcard.cardData.data" card-settings="cardSettings" index="index" wait-for-gridster />
                     </li>
diff --git a/resources/frontend_client/app/dashboard/partials/modal_add_to_dashboard.html b/resources/frontend_client/app/dashboard/partials/modal_add_to_dashboard.html
index 94ec239e84326f93e24cc69ed57b7d6099497f90..9bc0920924fd62563992a3780d41ddcf4eae433d 100644
--- a/resources/frontend_client/app/dashboard/partials/modal_add_to_dashboard.html
+++ b/resources/frontend_client/app/dashboard/partials/modal_add_to_dashboard.html
@@ -1,7 +1,7 @@
 <div>
     <div class="Form-group border-bottom">
         <div class="Button borderless float-right" ng-click='close()'>
-            <cv-close-icon width="18px" height="18px"></cv-close-icon>
+            <mb-icon name="close" width="18px" height="18px"></mb-icon>
         </div>
         <h3 class="text-normal">Add <span class="text-bold">"{{card.name}}"</span> to dashboard</h3>
     </div>
diff --git a/resources/frontend_client/app/directives.js b/resources/frontend_client/app/directives.js
index 4ee8227663233c62e3986aff4d57a277c5122a7c..6cd4f2971e846a3a01f19e485236deb955a75901 100644
--- a/resources/frontend_client/app/directives.js
+++ b/resources/frontend_client/app/directives.js
@@ -97,7 +97,7 @@ CorvusDirectives.directive('mbActionButton', ['$timeout', '$compile', function (
                 element.addClass('Button--waiting');
 
                 // activate spinner
-                var loadingIcon = angular.element('<cv-loading-icon width="12px" height="12px"></cv-loading-icon>');
+                var loadingIcon = angular.element('<mb-loading-icon width="12px" height="12px"></mb-loading-icon>');
                 element.append(loadingIcon);
                 $compile(loadingIcon)(scope);
 
@@ -111,7 +111,7 @@ CorvusDirectives.directive('mbActionButton', ['$timeout', '$compile', function (
                     element.text(successText);
                     element.removeClass('Button--waiting');
                     element.addClass('Button--success');
-                    var checkIcon = angular.element('<cv-check-icon width="12px" height="12px"></cv-check-icon>');
+                    var checkIcon = angular.element('<mb-icon name="check" width="12px" height="12px"></mb-icon>');
                     element.prepend(checkIcon);
                     $compile(checkIcon)(scope);
 
@@ -175,7 +175,7 @@ NavbarDirectives.directive('mbProfileLink', [function () {
                                 '<span class="UserNick">' +
                                     '<span class="UserInitials NavItem-text">{{initials}}</span> ' +
                                 '</span>' +
-                                '<cv-chevron-down-icon class="Dropdown-chevron ml1" width="8px" height="8px"></cv-chevron-down-icon>' +
+                                '<mb-icon name="chevrondown" class="Dropdown-chevron ml1" width="8px" height="8px"></mb-icon>' +
                             '</a>' +
                             '<ul class="Dropdown-content right">' +
                                 '<li><a class="link" href="/user/edit_current">Account Settings</a></li>' +
diff --git a/resources/frontend_client/app/explore/partials/data_grid.html b/resources/frontend_client/app/explore/partials/data_grid.html
index 31d9396973eb64f8f529b973a866735e389439a0..d11a5ac3340968821f07023ec556e0c147d91c59 100644
--- a/resources/frontend_client/app/explore/partials/data_grid.html
+++ b/resources/frontend_client/app/explore/partials/data_grid.html
@@ -32,7 +32,7 @@
                     <li class="Pill Pill--filled mr1 inline-block clearfix" ng-repeat="filter in queryFilters() track by $index">
                         <span>{{getFilterColumnName(filter)}}: {{filter[2]}}</span>
                         <a class="Pill-action" href="#" ng-click="removeFilter($index)">
-                            <cv-close-icon width="12px" height="12px"></cv-close-icon>
+                            <mb-icon name="close" width="12px" height="12px"></mb-icon>
                         </a>
                     </li>
             </ul>
@@ -40,7 +40,7 @@
             <!-- add filter button/dropdown -->
             <div class="Dropdown inline-block" dropdown is-open="filtersOpen">
                 <a class="Pill link mr1" href="#" dropdown-toggle ng-click="toggleNewFilters()">
-                    <cv-add-icon width="12px" height="12px"></cv-add-icon>
+                    <mb-icon name="add" width="12px" height="12px"></mb-icon>
                     Filter
                 </a>
                 <div class="Dropdown-content" ng-click="handleDropdownInput($event)">
diff --git a/resources/frontend_client/app/icon_paths.js b/resources/frontend_client/app/icon_paths.js
new file mode 100644
index 0000000000000000000000000000000000000000..4a4543178d7164396c321c8446b98db309ff9899
--- /dev/null
+++ b/resources/frontend_client/app/icon_paths.js
@@ -0,0 +1,40 @@
+'use strict';
+
+/*
+    Metabase Icon Paths
+    -----
+
+    These paths represent the current canonical icon set for Metabase.and are referenced by icons
+    used in both React and Angular components as a central source of truth.
+
+    USAGE:
+
+*/
+
+var ICON_PATHS = {
+    add: 'M19,13 L19,2 L14,2 L14,13 L2,13 L2,18 L14,18 L14,30 L19,30 L19,18 L30,18 L30,13 L19,13 Z',
+    addtodash: [
+        'M16,31 L16,31 C24.2842712,31 31,24.2842712 31,16 C31,7.71572875 24.2842712,1 16,1 C7.71572875,1 1,7.71572875 1,16 C1,24.2842712 7.71572875,31 16,31 L16,31 Z M16,32 L16,32 C7.163444,32 0,24.836556 0,16 C0,7.163444 7.163444,0 16,0 C24.836556,0 32,7.163444 32,16 C32,24.836556 24.836556,32 16,32 L16,32 Z',
+        'M17,15.5 L17,10 L15,10 L15,15.5 L9.5,15.5 L9.5,17.5 L15,17.5 L15,23 L17,23 L17,17.5 L22.5,17.5 L22.5,15.5 L17,15.5 Z',
+    ],
+    cards: 'M16.5,11 C16.1340991,11 15.7865579,10.9213927 15.4733425,10.7801443 L7.35245972,21.8211652 C7.7548404,22.264891 8,22.8538155 8,23.5 C8,24.8807119 6.88071187,26 5.5,26 C4.11928813,26 3,24.8807119 3,23.5 C3,22.1192881 4.11928813,21 5.5,21 C5.87370843,21 6.22826528,21.0819977 6.5466604,21.2289829 L14.6623495,10.1950233 C14.2511829,9.74948188 14,9.15407439 14,8.5 C14,7.11928813 15.1192881,6 16.5,6 C17.8807119,6 19,7.11928813 19,8.5 C19,8.96980737 18.8704088,9.4093471 18.6450228,9.78482291 L25.0405495,15.4699905 C25.4512188,15.1742245 25.9552632,15 26.5,15 C27.8807119,15 29,16.1192881 29,17.5 C29,18.8807119 27.8807119,20 26.5,20 C25.1192881,20 24,18.8807119 24,17.5 C24,17.0256697 24.1320984,16.5821926 24.3615134,16.2043506 L17.9697647,10.5225413 C17.5572341,10.8228405 17.0493059,11 16.5,11 Z M5.5,25 C6.32842712,25 7,24.3284271 7,23.5 C7,22.6715729 6.32842712,22 5.5,22 C4.67157288,22 4,22.6715729 4,23.5 C4,24.3284271 4.67157288,25 5.5,25 Z M26.5,19 C27.3284271,19 28,18.3284271 28,17.5 C28,16.6715729 27.3284271,16 26.5,16 C25.6715729,16 25,16.6715729 25,17.5 C25,18.3284271 25.6715729,19 26.5,19 Z M16.5,10 C17.3284271,10 18,9.32842712 18,8.5 C18,7.67157288 17.3284271,7 16.5,7 C15.6715729,7 15,7.67157288 15,8.5 C15,9.32842712 15.6715729,10 16.5,10 Z',
+    check: 'M1 14 L5 10 L13 18 L27 4 L31 8 L13 26 z ',
+    chevrondown: 'M1 12 L16 26 L31 12 L27 8 L16 18 L5 8 z ',
+    chevronright: 'M12 1 L26 16 L12 31 L8 27 L18 16 L8 5 z ',
+    close: 'M4 8 L8 4 L16 12 L24 4 L28 8 L20 16 L28 24 L24 28 L16 20 L8 28 L4 24 L12 16 z ',
+    dashboards: 'M17,5.49100518 L17,10.5089948 C17,10.7801695 17.2276528,11 17.5096495,11 L26.4903505,11 C26.7718221,11 27,10.7721195 27,10.5089948 L27,5.49100518 C27,5.21983051 26.7723472,5 26.4903505,5 L17.5096495,5 C17.2281779,5 17,5.22788048 17,5.49100518 Z M18.5017326,14 C18.225722,14 18,13.77328 18,13.4982674 L18,26.5017326 C18,26.225722 18.22672,26 18.5017326,26 L5.49826741,26 C5.77427798,26 6,26.22672 6,26.5017326 L6,13.4982674 C6,13.774278 5.77327997,14 5.49826741,14 L18.5017326,14 Z M14.4903505,6 C14.2278953,6 14,5.78028538 14,5.49100518 L14,10.5089948 C14,10.2167107 14.2224208,10 14.4903505,10 L5.50964952,10 C5.77210473,10 6,10.2197146 6,10.5089948 L6,5.49100518 C6,5.78328929 5.77757924,6 5.50964952,6 L14.4903505,6 Z M26.5089948,22 C26.2251201,22 26,21.7774008 26,21.4910052 L26,26.5089948 C26,26.2251201 26.2225992,26 26.5089948,26 L21.4910052,26 C21.7748799,26 22,26.2225992 22,26.5089948 L22,21.4910052 C22,21.7748799 21.7774008,22 21.4910052,22 L26.5089948,22 Z M26.5089948,14 C26.2251201,14 26,13.7774008 26,13.4910052 L26,18.5089948 C26,18.2251201 26.2225992,18 26.5089948,18 L21.4910052,18 C21.7748799,18 22,18.2225992 22,18.5089948 L22,13.4910052 C22,13.7748799 21.7774008,14 21.4910052,14 L26.5089948,14 Z M26.4903505,6 C26.2278953,6 26,5.78028538 26,5.49100518 L26,10.5089948 C26,10.2167107 26.2224208,10 26.4903505,10 L17.5096495,10 C17.7721047,10 18,10.2197146 18,10.5089948 L18,5.49100518 C18,5.78328929 17.7775792,6 17.5096495,6 L26.4903505,6 Z M5,13.4982674 L5,26.5017326 C5,26.7769181 5.21990657,27 5.49826741,27 L18.5017326,27 C18.7769181,27 19,26.7800934 19,26.5017326 L19,13.4982674 C19,13.2230819 18.7800934,13 18.5017326,13 L5.49826741,13 C5.22308192,13 5,13.2199066 5,13.4982674 Z M5,5.49100518 L5,10.5089948 C5,10.7801695 5.22765279,11 5.50964952,11 L14.4903505,11 C14.7718221,11 15,10.7721195 15,10.5089948 L15,5.49100518 C15,5.21983051 14.7723472,5 14.4903505,5 L5.50964952,5 C5.22817786,5 5,5.22788048 5,5.49100518 Z M21,21.4910052 L21,26.5089948 C21,26.7801695 21.2278805,27 21.4910052,27 L26.5089948,27 C26.7801695,27 27,26.7721195 27,26.5089948 L27,21.4910052 C27,21.2198305 26.7721195,21 26.5089948,21 L21.4910052,21 C21.2198305,21 21,21.2278805 21,21.4910052 Z M21,13.4910052 L21,18.5089948 C21,18.7801695 21.2278805,19 21.4910052,19 L26.5089948,19 C26.7801695,19 27,18.7721195 27,18.5089948 L27,13.4910052 C27,13.2198305 26.7721195,13 26.5089948,13 L21.4910052,13 C21.2198305,13 21,13.2278805 21,13.4910052 Z',
+    download: [
+        'M17,16.5 L17,8 L15,8 L15,16.5 L11,16.5 L9.93247919,16.5 L10.6158894,17.3200922 L15.6158894,23.3200922 L16,23.781025 L16.3841106,23.3200922 L21.3841106,17.3200922 L22.0675208,16.5 L21,16.5 L17,16.5 L17,16.5 Z',
+        'M16,31 L16,31 C24.2842712,31 31,24.2842712 31,16 C31,7.71572875 24.2842712,1 16,1 C7.71572875,1 1,7.71572875 1,16 C1,24.2842712 7.71572875,31 16,31 L16,31 Z M16,32 L16,32 C7.163444,32 0,24.836556 0,16 C0,7.163444 7.163444,0 16,0 C24.836556,0 32,7.163444 32,16 C32,24.836556 24.836556,32 16,32 L16,32 Z'
+    ],
+    expand: 'M16 4 L28 4 L28 16 L24 12 L20 16 L16 12 L20 8z M4 16 L8 20 L12 16 L16 20 L12 24 L16 28 L4 28z ',
+    explore: 'M16.4796545,16.298957 L16.4802727,23.0580389 L16.4802727,23.0580389 C17.3528782,23.2731238 18,24.0609902 18,25 C18,26.1045695 17.1045695,27 16,27 C14.8954305,27 14,26.1045695 14,25 C14,24.0751922 14.6276951,23.2969904 15.4802906,23.0681896 L15.4796772,16.3617812 L15.4796772,16.3617812 L9.42693239,19.2936488 C9.54250354,19.9090101 9.36818637,20.5691625 8.90013616,21.0538426 C8.13283771,21.8484034 6.86670062,21.8705039 6.07213982,21.1032055 C5.27757902,20.335907 5.25547851,19.06977 6.02277696,18.2752092 C6.79007541,17.4806484 8.0562125,17.4585478 8.8507733,18.2258463 C8.90464955,18.277874 8.95497425,18.3321952 9.00174214,18.3885073 L14.8957415,15.5335339 L8.95698016,12.663638 C8.54316409,13.1288103 7.91883307,13.3945629 7.25239963,13.3245179 C6.15388108,13.2090589 5.35695382,12.2249357 5.47241277,11.1264172 C5.58787172,10.0278986 6.57199493,9.23097136 7.67051349,9.34643031 C8.76903204,9.46188927 9.5659593,10.4460125 9.45050035,11.544531 C9.44231425,11.6224166 9.42976147,11.6987861 9.41311084,11.7734218 L15.4795257,14.705006 L15.4789062,7.93143834 C14.6270158,7.70216703 14,6.9243072 14,6 C14,4.8954305 14.8954305,4 16,4 C17.1045695,4 18,4.8954305 18,6 C18,6.93950562 17.3521946,7.72770818 16.4788902,7.94230133 L16.4795143,14.7663758 L22.5940736,11.8045661 C22.4397082,11.1620316 22.6068068,10.4567329 23.0998638,9.94615736 C23.8671623,9.15159656 25.1332994,9.12949606 25.9278602,9.8967945 C26.722421,10.664093 26.7445215,11.93023 25.977223,12.7247908 C25.2099246,13.5193516 23.9437875,13.5414522 23.1492267,12.7741537 C23.120046,12.7459743 23.0919072,12.717122 23.0648111,12.687645 L17.1917924,15.5324558 L23.0283963,18.3529842 C23.4420438,17.8775358 24.073269,17.604607 24.7476004,17.6754821 C25.8461189,17.7909411 26.6430462,18.7750643 26.5275872,19.8735828 C26.4121283,20.9721014 25.4280051,21.7690286 24.3294865,21.6535697 C23.230968,21.5381107 22.4340407,20.5539875 22.5494996,19.455469 C22.5569037,19.3850239 22.56788,19.315819 22.5822296,19.2480155 L16.4796545,16.298957 Z M16.0651172,6.99791382 C16.5870517,6.96436642 17,6.53040783 17,6 C17,5.44771525 16.5522847,5 16,5 C15.4477153,5 15,5.44771525 15,6 C15,6.53446591 15.4192913,6.9710011 15.9468816,6.99861337 L16.0651172,6.99791382 L16.0651172,6.99791382 Z M16,26 C16.5522847,26 17,25.5522847 17,25 C17,24.4477153 16.5522847,24 16,24 C15.4477153,24 15,24.4477153 15,25 C15,25.5522847 15.4477153,26 16,26 Z M6.56266251,20.102897 C6.80476821,20.5992873 7.40343746,20.8054256 7.89982771,20.5633199 C8.39621795,20.3212142 8.60235631,19.722545 8.36025061,19.2261547 C8.11814491,18.7297645 7.51947566,18.5236261 7.02308541,18.7657318 C6.52669517,19.0078375 6.32055681,19.6065068 6.56266251,20.102897 Z M23.6397494,11.7738453 C23.8818551,12.2702355 24.4805243,12.4763739 24.9769146,12.2342682 C25.4733048,11.9921625 25.6794432,11.3934932 25.4373375,10.897103 C25.1952318,10.4007127 24.5965625,10.1945744 24.1001723,10.4366801 C23.603782,10.6787858 23.3976437,11.277455 23.6397494,11.7738453 Z M25.4373375,20.102897 C25.6794432,19.6065068 25.4733048,19.0078375 24.9769146,18.7657318 C24.4805243,18.5236261 23.8818551,18.7297645 23.6397494,19.2261547 C23.3976437,19.722545 23.603782,20.3212142 24.1001723,20.5633199 C24.5965625,20.8054256 25.1952318,20.5992873 25.4373375,20.102897 Z M8.36025061,11.7738453 C8.60235631,11.277455 8.39621795,10.6787858 7.89982771,10.4366801 C7.40343746,10.1945744 6.80476821,10.4007127 6.56266251,10.897103 C6.32055681,11.3934932 6.52669517,11.9921625 7.02308541,12.2342682 C7.51947566,12.4763739 8.11814491,12.2702355 8.36025061,11.7738453 Z',
+    filter: 'M6.57883011,7.57952565 L1.18660637e-12,-4.86721774e-13 L16,-4.92050845e-13 L9.42116989,7.57952565 L9.42116989,13.5542169 L6.57883011,15 L6.57883011,7.57952565 Z',
+    gear: 'M14 0 H18 L19 6 L20.707 6.707 L26 3.293 L28.707 6 L25.293 11.293 L26 13 L32 14 V18 L26 19 L25.293 20.707 L28.707 26 L26 28.707 L20.707 25.293 L19 26 L18 32 L14 32 L13 26 L11.293 25.293 L6 28.707 L3.293 26 L6.707 20.707 L6 19 L0 18 L0 14 L6 13 L6.707 11.293 L3.293 6 L6 3.293 L11.293 6.707 L13 6 L14 0 z M16 10 A6 6 0 0 0 16 22 A6 6 0 0 0 16 10',
+    grid: 'M2 2 L10 2 L10 10 L2 10z M12 2 L20 2 L20 10 L12 10z M22 2 L30 2 L30 10 L22 10z M2 12 L10 12 L10 20 L2 20z M12 12 L20 12 L20 20 L12 20z M22 12 L30 12 L30 20 L22 20z M2 22 L10 22 L10 30 L2 30z M12 22 L20 22 L20 30 L12 30z M22 22 L30 22 L30 30 L22 30z',
+    list: 'M3 8 A3 3 0 0 0 9 8 A3 3 0 0 0 3 8 M12 6 L28 6 L28 10 L12 10z M3 16 A3 3 0 0 0 9 16 A3 3 0 0 0 3 16 M12 14 L28 14 L28 18 L12 18z M3 24 A3 3 0 0 0 9 24 A3 3 0 0 0 3 24 M12 22 L28 22 L28 26 L12 26z',
+    search: 'M12 0 A12 12 0 0 0 0 12 A12 12 0 0 0 12 24 A12 12 0 0 0 18.5 22.25 L28 32 L32 28 L22.25 18.5 A12 12 0 0 0 24 12 A12 12 0 0 0 12 0 M12 4 A8 8 0 0 1 12 20 A8 8 0 0 1 12 4  ',
+    star: 'M16 0 L21 11 L32 12 L23 19 L26 31 L16 25 L6 31 L9 19 L0 12 L11 11',
+};
+
+/* module.exports = ICON_PATHS */
diff --git a/resources/frontend_client/app/query_builder/icon.react.js b/resources/frontend_client/app/query_builder/icon.react.js
index cf458743cd6f3b89bc52303f73963f612fb5bb36..d94d63977200bff59d46a33dbf59f3fdc2d0a2ca 100644
--- a/resources/frontend_client/app/query_builder/icon.react.js
+++ b/resources/frontend_client/app/query_builder/icon.react.js
@@ -1,21 +1,8 @@
 'use strict';
+/* global ICON_PATHS */
 
 var Icon = React.createClass({
     displayName: 'Icon',
-    iconPaths: {
-        addtodash: [
-            'M16,31 L16,31 C24.2842712,31 31,24.2842712 31,16 C31,7.71572875 24.2842712,1 16,1 C7.71572875,1 1,7.71572875 1,16 C1,24.2842712 7.71572875,31 16,31 L16,31 Z M16,32 L16,32 C7.163444,32 0,24.836556 0,16 C0,7.163444 7.163444,0 16,0 C24.836556,0 32,7.163444 32,16 C32,24.836556 24.836556,32 16,32 L16,32 Z',
-            'M17,15.5 L17,10 L15,10 L15,15.5 L9.5,15.5 L9.5,17.5 L15,17.5 L15,23 L17,23 L17,17.5 L22.5,17.5 L22.5,15.5 L17,15.5 Z',
-        ],
-        check: 'M1 14 L5 10 L13 18 L27 4 L31 8 L13 26 z ',
-        close: 'M4 8 L8 4 L16 12 L24 4 L28 8 L20 16 L28 24 L24 28 L16 20 L8 28 L4 24 L12 16 z ',
-        download: [
-            'M17,16.5 L17,8 L15,8 L15,16.5 L11,16.5 L9.93247919,16.5 L10.6158894,17.3200922 L15.6158894,23.3200922 L16,23.781025 L16.3841106,23.3200922 L21.3841106,17.3200922 L22.0675208,16.5 L21,16.5 L17,16.5 L17,16.5 Z',
-            'M16,31 L16,31 C24.2842712,31 31,24.2842712 31,16 C31,7.71572875 24.2842712,1 16,1 C7.71572875,1 1,7.71572875 1,16 C1,24.2842712 7.71572875,31 16,31 L16,31 Z M16,32 L16,32 C7.163444,32 0,24.836556 0,16 C0,7.163444 7.163444,0 16,0 C24.836556,0 32,7.163444 32,16 C32,24.836556 24.836556,32 16,32 L16,32 Z'
-        ],
-        expand: 'M16 4 L28 4 L28 16 L24 12 L20 16 L16 12 L20 8z M4 16 L8 20 L12 16 L16 20 L12 24 L16 28 L4 28z ',
-        filter: 'M6.57883011,7.57952565 L1.18660637e-12,-4.86721774e-13 L16,-4.92050845e-13 L9.42116989,7.57952565 L9.42116989,13.5542169 L6.57883011,15 L6.57883011,7.57952565 Z',
-    },
     getDefaultProps: function () {
        return {
           width: 32,
@@ -24,7 +11,7 @@ var Icon = React.createClass({
        };
     },
     render: function () {
-        var iconPath = this.iconPaths[this.props.name],
+        var iconPath = ICON_PATHS[this.props.name],
             path;
 
         // handle multi path icons which appear as non strings
diff --git a/resources/frontend_client/app/services.js b/resources/frontend_client/app/services.js
index 61b3d4229ac108ed688b56faaed1d06c518bca84..32a81c9cfce657adf749055ac2487b52bef3a168 100644
--- a/resources/frontend_client/app/services.js
+++ b/resources/frontend_client/app/services.js
@@ -470,7 +470,7 @@ CorvusServices.service('CorvusCore', ['$resource', 'User', function($resource, U
                 required: true
             }, {
                 displayName: "Database password",
-                fieldName: "pass",
+                fieldName: "password",
                 placeholder: "*******"
             }, {
                 displayName: "Use a secure connection (SSL)?",
diff --git a/resources/frontend_client/app/setup/partials/setup_info.html b/resources/frontend_client/app/setup/partials/setup_info.html
index 11e56c6f1eb294f893013efaa7002bba98c21348..aef56e661b3fa55748fc234b2842ca3818331acd 100644
--- a/resources/frontend_client/app/setup/partials/setup_info.html
+++ b/resources/frontend_client/app/setup/partials/setup_info.html
@@ -1,6 +1,6 @@
 <!-- SETUP NAV -->
 <nav class="SetupNav text-brand py4 flex layout-centered">
-    <cv-logo-icon class="mr2" width="41" height="51"></cv-logo-icon>
+    <mb-logo-icon class="mr2" width="41" height="51"></mb-logo-icon>
     <span class="Setup-brandWordMark">metabase</span>
 </nav>
 
@@ -10,7 +10,7 @@
                 <div class="flex align-center py3" ng-click="activeStep = 'user'">
                     <span class="SetupStep-indicator flex layout-centered absolute bordered">
                         <span class="SetupStep-number">1</span>
-                        <cv-check-icon class="SetupStep-check" width="16px" height="16px"></cv-check-icon>
+                        <mb-icon name="check" class="SetupStep-check" width="16px" height="16px"></mb-icon>
                     </span>
                     <h3 class="SetupStep-title ml4">{{userStepText}}</h3>
                 </div>
@@ -67,7 +67,7 @@
             <div class="flex align-center py3">
                 <span class="SetupStep-indicator flex layout-centered absolute bordered">
                     <span class="SetupStep-number">2</span>
-                    <cv-check-icon class="SetupStep-check" width="16px" height="16px"></cv-check-icon>
+                    <mb-icon name="check" class="SetupStep-check" width="16px" height="16px"></mb-icon>
                 </span>
                 <h3 class="SetupStep-title ml4">{{databaseStepText}}</h3>
             </div>
diff --git a/resources/frontend_client/app/setup/partials/setup_welcome.html b/resources/frontend_client/app/setup/partials/setup_welcome.html
index bb4d5872876984a1ab3ef8d2529d30a75ed48acf..beb1f32e5dcb49ab12324d378072f50216941dfb 100644
--- a/resources/frontend_client/app/setup/partials/setup_welcome.html
+++ b/resources/frontend_client/app/setup/partials/setup_welcome.html
@@ -1,5 +1,5 @@
 <section class="wrapper wrapper-max-sm flex layout-centered full-height flex-column">
-  <cv-logo-icon width="109px" height="138px"></cv-logo-icon>
+  <mb-logo-icon width="109px" height="138px"></mb-logo-icon>
   <div class="WelcomeMessage text-centered">
       <h1 class="WelcomeMessage-title text-brand">Welcome to Metabase</h1>
       <p class="WelcomeMessage-subTitle text-body">Looks like everything is installed and working great. We’ll quickly get to know you, connect you to your data, and we’ll have you on your way  to your data.</p>
diff --git a/resources/frontend_client/index.html b/resources/frontend_client/index.html
index 8058fd80e76439061fe6f1f4199c9b1423966259..f3993006c8efba643e198fef5d6c5d0887cc9650 100644
--- a/resources/frontend_client/index.html
+++ b/resources/frontend_client/index.html
@@ -28,25 +28,19 @@
                     <ul class="float-left ml4">
                         <li class="inline-block">
                             <a class="NavItem NavItem-withIcon" href="/dash/" selectable-nav-item="dashboards">
-                                <div class="IconWrapper">
-                                    <cv-dashboards-icon></cv-dashboards-icon>
-                                </div>
+                                <mb-icon class="IconWrapper" name="dashboards"/></mb-icon>
                                 <span class="NavItem-text">Dashboards</span>
                             </a>
                         </li>
                         <li class="inline-block">
                             <a class="NavItem NavItem-withIcon" href="/card/" selectable-nav-item="cards">
-                                <div class="IconWrapper">
-                                    <cv-cards-icon></cv-cards-icon>
-                                </div>
+                                <mb-icon class="IconWrapper" name="cards"></mb-icon>
                                 <span class="NavItem-text">Cards</span>
                             </a>
                         </li>
                         <li class="inline-block">
                             <a class="NavItem NavItem-withIcon" href="/explore/" selectable-nav-item="explore">
-                                <div class="IconWrapper">
-                                    <cv-explore-icon></cv-explore-icon>
-                                </div>
+                                <mb-icon class="IconWrapper" name="explore"></mb-icon>
                                 <span class="NavItem-text">Explore</span>
                             </a>
                         </li>
@@ -57,7 +51,7 @@
                             <a class="NavItem" selectable-nav-item="settings" dropdown-toggle>
                                 <span class="NavItem-text" ng-if="!user.first_name">Me</span>
                                 <span class="NavItem-text" ng-if="user.first_name">{{user.first_name}}</span>
-                                <cv-chevron-down-icon width="8px" height="8px"></cv-chevron-down-icon>
+                                <mb-icon name="chevrondown" width="8px" height="8px"></mb-icon>
                             </a>
                             <ul class="Dropdown-content right">
                                 <li class="" ><a class="link" href="/user/edit_current">Account Settings</a></li>
@@ -72,22 +66,9 @@
             <!-- ADMIN NAV -->
             <nav class="AdminNav" ng-show="nav === 'admin'">
                 <div class="wrapper flex align-center">
-                    <!-- org title -->
-                    <div class="NavTitle flex align-center" ng-if="!user.is_multi_org">
-                        <cv-gear-icon class="AdminGear" width="22px" height="22px"></cv-gear-icon>
-                        <span class="NavItem-text">{{currentOrg.name}} Admin</span>
-                    </div>
-                    <div class="NavTitle flex align-center Dropdown" dropdown on-toggle="toggled(open)" ng-if="user.is_multi_org">
-                        <cv-gear-icon class="AdminGear" width="22px" height="22px"></cv-gear-icon>
-                        <span dropdown-toggle>
-                            <span class="NavItem-text">{{currentOrg.name}} Admin</span>
-                            <cv-chevron-down-icon width="8px" height="8px"></cv-chevron-down-icon>
-                        </span>
-                        <ul class="Dropdown-content left">
-                            <li ng-repeat="organization in userMemberOf">
-                                <a class="link block py1" href="#" ng-click="changeCurrOrg(organization.slug, true)">{{organization.name}}</a>
-                            </li>
-                        </ul>
+                    <div class="NavTitle flex align-center">
+                        <mb-icon name="gear" class="AdminGear" width="22px" height="22px"></mb-icon>
+                        <span class="NavItem-text ml1">Site Administration</span>
                     </div>
 
                     <!-- admin sections -->
@@ -113,24 +94,6 @@
                     <mb-profile-link user="user" context="nav"></mb-profile-link>
                 </div>
             </nav>
-
-            <!-- SETUP NAV -->
-            <nav class="SetupNav" ng-show="nav === 'setup'">
-                <div class="SetupWrapper py4">
-                    <span class="SetupOrg">
-                        {{currentOrg.name}}
-                    </span>
-                    <span class="SetupUser float-right Dropdown" dropdown on-toggle="toggled(open)">
-                        <div dropdown-toggle>
-                            {{user.email}}
-                            <cv-chevron-down-icon class="ml1" width="10px" height="10px"></cv-chevron-down-icon>
-                          </div>
-                        <ul class="Dropdown-content right">
-                          <li class="" ><a class="link" href="/auth/logout">Logout</a></li>
-                        </ul>
-                    </span>
-                </div>
-            </nav>
         </div>
 
         <div class="MainContent flex flex-column full-height" ng-view></div>
diff --git a/src/metabase/api/meta/field.clj b/src/metabase/api/meta/field.clj
index 1694ef8fa325429a75af4e503a2a0eae58ef27e1..36c6f6cbd7d278362999b35f4ce7734fbfa8acc4 100644
--- a/src/metabase/api/meta/field.clj
+++ b/src/metabase/api/meta/field.clj
@@ -39,10 +39,10 @@
   {field_type   FieldType
    special_type FieldSpecialType}
   (write-check Field id)
-  (check-500 (m/mapply upd Field id (merge {:description  description                                   ; you're allowed to unset description and special_type
-                                            :special_type special_type}                                 ; but field_type and preview_display must be replaced
-                                           (when field_type      {:field_type field_type})              ; with new non-nil values
-                                           (when preview_display {:preview_display preview_display}))))
+  (check-500 (m/mapply upd Field id (merge {:description  description                                                ; you're allowed to unset description and special_type
+                                            :special_type special_type}                                              ; but field_type and preview_display must be replaced
+                                           (when field_type                   {:field_type field_type})              ; with new non-nil values
+                                           (when (not (nil? preview_display)) {:preview_display preview_display}))))
   (sel :one Field :id id))
 
 (defendpoint GET "/:id/summary"
diff --git a/src/metabase/db.clj b/src/metabase/db.clj
index 2ae4feaeff635343eac761db7e3cde3bf86cce1e..19051f4d5191c564b959450e496b66de3f42db1b 100644
--- a/src/metabase/db.clj
+++ b/src/metabase/db.clj
@@ -439,7 +439,8 @@
   [entity & {:as kwargs}]
   `(not (empty? (select (entity->korma ~entity)
                         (fields [:id])
-                        (where ~kwargs)
+                        ~@(when (seq kwargs)
+                            `[(where ~kwargs)])
                         (limit 1)))))
 
 ;; ## CASADE-DELETE
diff --git a/src/metabase/driver.clj b/src/metabase/driver.clj
index 5d29e310fcb5703c785ba545a5baf3abc4762439..2d0078a7ff8f64b9804c3d75a145872ece94bb92 100644
--- a/src/metabase/driver.clj
+++ b/src/metabase/driver.clj
@@ -133,7 +133,8 @@
   [query]
   {:pre [(map? query)]}
   (try
-    (binding [qp/*query* query]
+    (binding [qp/*query* query
+              qp/*internal-context* (atom {})]
       (let [driver  (database-id->driver (:database query))
             query   (qp/preprocess query)
             results (binding [qp/*query* query]
diff --git a/src/metabase/driver/generic_sql.clj b/src/metabase/driver/generic_sql.clj
index f796639ca506eaaec16529d50fb9e7fd6943613a..103e673651eab86605f2f5f9a3949717d0a77004 100644
--- a/src/metabase/driver/generic_sql.clj
+++ b/src/metabase/driver/generic_sql.clj
@@ -11,7 +11,8 @@
 (defrecord SqlDriver [column->base-type
                       connection-details->connection-spec
                       database->connection-details
-                      sql-string-length-fn]
+                      sql-string-length-fn
+                      timezone->set-timezone-sql]
   IDriver
   ;; Connection
   (can-connect? [this database]
diff --git a/src/metabase/driver/generic_sql/native.clj b/src/metabase/driver/generic_sql/native.clj
index ef0f743a46c4671d69a08cb2160a4a85e7fe5ccc..184f82ea9fd04cadcb1e60fda91286ff46f4c419 100644
--- a/src/metabase/driver/generic_sql/native.clj
+++ b/src/metabase/driver/generic_sql/native.clj
@@ -10,18 +10,6 @@
             [metabase.driver.generic-sql.util :refer :all]
             [metabase.models.database :refer [Database]]))
 
-(def ^:dynamic *timezone->set-timezone-sql*
-  " This function is called whenever `timezone` is specified in a native query, at the beginning of
-   the DB transaction.
-
-   If implemented, it should take a timestamp like `\"US/Pacific\"` and return a SQL
-   string that can be executed to set the timezone within the context of a transaction,
-   e.g. `\"SET LOCAL timezone to 'US/Pacific'\"`.
-
-   Because not all DB engines support timestamps (e.g., H2), the default implementation is a no-op.
-   Engines that *do* support timestamps (e.g., Postgres) should override this function."
-  (fn [_]))
-
 (defn- value->base-type
   "Attempt to match a value we get back from the DB with the corresponding base-type`."
   [v]
@@ -48,9 +36,9 @@
                                                 ;; If timezone is specified in the Query and the driver supports setting the timezone then execute SQL to set it
                                                 (when-let [timezone (or (-> query :native :timezone)
                                                                         (driver/report-timezone))]
-                                                  (when-let [set-timezone-sql (*timezone->set-timezone-sql* timezone)]
+                                                  (when-let [timezone->set-timezone-sql (:timezone->set-timezone-sql (driver/database-id->driver database-id))]
                                                     (log/debug "Setting timezone to:" timezone)
-                                                    (jdbc/db-do-prepared conn set-timezone-sql)))
+                                                    (jdbc/db-do-prepared conn (timezone->set-timezone-sql timezone))))
                                                 (jdbc/query conn sql :as-arrays? true))]
          {:rows rows
           :columns columns
diff --git a/src/metabase/driver/query_processor.clj b/src/metabase/driver/query_processor.clj
index 0aa1d547f1d54f0a5cc137d1ca0e78822d96ff92..55230860570d91e52d2cef77b13f05e42d5ccac3 100644
--- a/src/metabase/driver/query_processor.clj
+++ b/src/metabase/driver/query_processor.clj
@@ -2,12 +2,14 @@
   "Preprocessor that does simple transformations to all incoming queries, simplifing the driver-specific implementations."
   (:require [clojure.core.match :refer [match]]
             [clojure.tools.logging :as log]
+            [korma.core :refer :all]
             [metabase.db :refer :all]
             [metabase.driver.interface :as i]
             [metabase.models.field :refer [Field field->fk-table]]))
 
 (declare add-implicit-breakout-order-by
          add-implicit-limit
+         add-implicit-fields
          get-special-column-info
          preprocess-cumulative-sum
          preprocess-structured
@@ -34,6 +36,10 @@
   "Should we disable logging for the QP? (e.g., during sync we probably want to turn it off to keep logs less cluttered)."
   false)
 
+(def ^:dynamic *internal-context*
+  "A neat place to store 'notes-to-self': things individual implementations don't need to know about, like if the `fields` clause was added implicitly."
+  (atom nil))
+
 
 ;; # PREPROCESSOR
 
@@ -51,6 +57,7 @@
                                                            remove-empty-clauses
                                                            add-implicit-breakout-order-by
                                                            add-implicit-limit
+                                                           add-implicit-fields
                                                            preprocess-cumulative-sum))]
     (when-not *disable-qp-logging*
       (log/debug (colorize.core/cyan "\n******************** PREPROCESSED: ********************\n"
@@ -102,7 +109,7 @@
 ;;; ### ADD-IMPLICIT-LIMIT
 
 (defn add-implicit-limit
-  "Add an implicit limit clause to queries with `rows` aggregations."
+  "Add an implicit `limit` clause to queries with `rows` aggregations."
   [{:keys [limit aggregation] :as query}]
   (if (and (= aggregation ["rows"])
            (not limit))
@@ -110,6 +117,21 @@
     query))
 
 
+;;; ### ADD-IMPLICIT-FIELDS
+
+(defn add-implicit-fields
+  "Add an implicit `fields` clause to queries with `rows` aggregations."
+  [{:keys [fields aggregation breakout source_table] :as query}]
+  (if-not (and (= aggregation ["rows"])
+               (not breakout)
+               (not fields))
+    query
+    ;; If we're doing a "rows" aggregation with no breakout or fields clauses add one that will exclude Fields that are supposed to be hidden
+    (do (swap! *internal-context* assoc :fields-is-implicit true)
+        (assoc query :fields (sel :many :id Field :table_id source_table, :active true, :preview_display true,
+                                  :field_type [not= "sensitive"], (order :position :asc), (order :id :desc))))))
+
+
 ;; ### PREPROCESS-CUMULATIVE-SUM
 
 (defn preprocess-cumulative-sum
@@ -131,7 +153,7 @@
       ;; to just fetch all the values of the field in question.
       cum-sum-with-same-breakout? (-> query
                                       (dissoc :breakout)
-                                      (assoc :cum_sum     ag-field
+                                      (assoc :cum_sum     ag-field     ; TODO - move this to *internal-context* instead?
                                              :aggregation ["rows"]
                                              :fields      [ag-field]))
 
@@ -320,7 +342,7 @@
   (try
     (-order-columns (sel :many :fields [Field :id :name :position] :table_id source-table)
                     breakout-field-ids
-                    field-field-ids
+                    (when-not (:fields-is-implicit @*internal-context*) field-field-ids)
                     castified-field-names)
     (catch Exception e
       (.printStackTrace e)
diff --git a/src/metabase/routes.clj b/src/metabase/routes.clj
index cae3ffa600b81185260407743d99bb5d963c8b97..c4a831396dad218e0c365aa1e36d96aac5ebff4c 100644
--- a/src/metabase/routes.clj
+++ b/src/metabase/routes.clj
@@ -5,9 +5,9 @@
             [metabase.api.routes :as api]
             [metabase.setup :as setup]))
 
-
-(let [redirect-to-setup? (fn [{:keys [uri]}]                      ; Redirect naughty users who try to visit a page other than setup
-                           (and (setup/token-exists?)             ; if setup is not yet complete
+;; Redirect naughty users who try to visit a page other than setup if setup is not yet complete
+(let [redirect-to-setup? (fn [{:keys [uri]}]
+                           (and (setup/incomplete?)
                                 (not (re-matches #"^/setup/.*$" uri))))
       index (fn [request]
               (if (redirect-to-setup? request) (resp/redirect (format "/setup/init/%s" (setup/token-value)))
diff --git a/src/metabase/setup.clj b/src/metabase/setup.clj
index 5ddba8bc2dfecbb4aed632776efdf947dec62417..91090004c13969b5b8c54baacf68b0e14cf0fedb 100644
--- a/src/metabase/setup.clj
+++ b/src/metabase/setup.clj
@@ -1,6 +1,8 @@
-(ns metabase.setup)
+(ns metabase.setup
+  (:require [metabase.db :as db]
+            [metabase.models.user :refer [User]]))
 
-(def ^:private setup-token
+(defonce ^:private setup-token
   (atom nil))
 
 (defn token-value
@@ -8,10 +10,11 @@
   []
   @setup-token)
 
-(defn token-exists?
-  "Return `true` if a setup token exists."
+(defn incomplete?
+  "Return `true` if a setup token exists and no `Users` exist in the DB."
   []
-  (boolean @setup-token))
+  (and @setup-token
+       (not (db/exists? User))))
 
 (defn token-match?
   "Function for checking if the supplied string matches our setup token.
diff --git a/test/metabase/driver/generic_sql/query_processor_test.clj b/test/metabase/driver/generic_sql/query_processor_test.clj
index f10abfcffd27241a3cc516502685cf36bd604cf3..61e771cf86e81eee07e04d81d6db30ef6fd2f08f 100644
--- a/test/metabase/driver/generic_sql/query_processor_test.clj
+++ b/test/metabase/driver/generic_sql/query_processor_test.clj
@@ -12,7 +12,9 @@
 ;; Check that we get an error response formatted the way we'd expect
 (expect
     {:status :failed
-     :error (format "Column \"CHECKINS.NAME\" not found; SQL statement:\nSELECT \"CHECKINS\".* FROM \"CHECKINS\" WHERE (\"CHECKINS\".\"NAME\" = ?) LIMIT %d" max-result-rows)}
+     :error (str "Column \"CHECKINS.NAME\" not found; SQL statement:\nSELECT \"CHECKINS\".\"ID\", CAST(\"DATE\" AS DATE), "
+                 "\"CHECKINS\".\"VENUE_ID\", \"CHECKINS\".\"USER_ID\" FROM \"CHECKINS\" WHERE (\"CHECKINS\".\"NAME\" = ?) LIMIT "
+                 max-result-rows)}
   ;; This will print a stacktrace. Better to reassure people that that's on purpose than to make people question whether the tests are working
   (do (log/info (color/green "NOTE: The following stacktrace is expected <3"))
       (driver/process-query {:database @db-id
diff --git a/test/metabase/driver/query_processor_test.clj b/test/metabase/driver/query_processor_test.clj
index 3b9c5f9f6351407c0f84516e1bd4f5a3e226ee8b..b2876f5bcaabc3e1cf65f36d45d3132c5b620f02 100644
--- a/test/metabase/driver/query_processor_test.clj
+++ b/test/metabase/driver/query_processor_test.clj
@@ -4,7 +4,8 @@
             [metabase.db :refer :all]
             [metabase.driver :as driver]
             [metabase.driver.query-processor :refer :all]
-            (metabase.models [table :refer [Table]])
+            (metabase.models [field :refer [Field]]
+                             [table :refer [Table]])
             [metabase.test.data.datasets :as datasets :refer [*dataset*]]))
 
 ;; ##  Dataset-Independent Data Fns
@@ -706,3 +707,24 @@
    :aggregation  ["stddev" (id :venues :category_id)]
    :breakout     [(id :venues :price)]
    :order_by     [[["aggregation" 0] "descending"]]})
+
+;;; ### make sure that rows where preview_display = false don't get displayed
+
+(datasets/expect-with-all-datasets
+ [(set (->columns "category_id" "name" "latitude" "id" "longitude" "price"))
+  (set (->columns "category_id" "name" "latitude" "id" "longitude"))
+  (set (->columns "category_id" "name" "latitude" "id" "longitude" "price"))]
+ (let [get-col-names (fn [] (-> (driver/process-query {:database (db-id)
+                                                       :type     "query"
+                                                       :query    {:aggregation  ["rows"]
+                                                                  :source_table (id :venues)
+                                                                  :order_by     [[(id :venues :id) "ascending"]]
+                                                                  :limit        1}})
+                                :data
+                                :columns
+                                set))]
+   [(get-col-names)
+    (do (upd Field (id :venues :price) :preview_display false)
+        (get-col-names))
+    (do (upd Field (id :venues :price) :preview_display true)
+        (get-col-names))]))