diff --git a/web/gui/src/main/webapp/app/view/sample/sample.js b/web/gui/src/main/webapp/app/view/sample/sample.js
index 459b86d..d169a7c 100644
--- a/web/gui/src/main/webapp/app/view/sample/sample.js
+++ b/web/gui/src/main/webapp/app/view/sample/sample.js
@@ -20,25 +20,44 @@
 
 (function () {
     'use strict';
-    var tbs;
+    var $log, tbs, flash,
+        sampleDiv;
+
+    function btnFn() {
+        flash.flash('Hi there friends!');
+    }
+    function togFn(display) {
+        if (display) { sampleDiv.style('display', 'block'); }
+        else { sampleDiv.style('display', 'none'); }
+    }
 
     angular.module('ovSample', ['onosUtil'])
-        .controller('OvSampleCtrl', ['$log', 'ToolbarService',
-            function (_$log_, _tbs_) {
-                var self = this,
-                    $log = _$log_,
-                    tbs = _tbs_;
+        .controller('OvSampleCtrl', ['$log', 'ToolbarService', 'FlashService',
+            function (_$log_, _tbs_, _flash_) {
+                var self = this;
+                $log = _$log_;
+                tbs = _tbs_;
+                flash = _flash_;
 
                 self.message = 'Hey there folks!';
 
+                sampleDiv = d3.select('#ov-sample')
+                    .append('div')
+                    .text('Look at me!')
+                    .style({
+                        'display': 'none',
+                        'color': 'rgb(204, 89, 81)',
+                        'font-size': '20pt'
+                    });
+
                 var toolbar = tbs.createToolbar('sample'),
                     rset = [{ gid: 'switch', cb: function () {}},
                         { gid: 'bird', cb: function () {}}];
-                toolbar.addButton('some-btn', 'crown', function () {});
-                toolbar.addToggle('some-tog', 'chain', function () {});
+                toolbar.addButton('hello-btn', 'crown', btnFn);
+                toolbar.addToggle('sample-tog', 'chain', false, togFn);
                 toolbar.addSeparator();
                 toolbar.addRadioSet('some-rad', rset);
-                toolbar.show();
+                toolbar.hide();
 
              $log.log('OvSampleCtrl has been created');
         }]);
