diff --git a/fblikebutton.admin.inc b/fblikebutton.admin.inc
index a11e682..4818e0c 100644
--- a/fblikebutton.admin.inc
+++ b/fblikebutton.admin.inc
@@ -10,20 +10,59 @@
  * Configure which node types can be "liked" by users.
  */
 function fblikebutton_admin_settings() {
-  $fblikebutton_node_options = node_get_types('names');
+  $fblikebutton_node_options = node_type_get_names();
   $form['fblikebutton_node_types'] = array(
     '#type' => 'checkboxes',
-    '#title' => t('Display the Like button on these content types'),
+    '#title' => t('Display the button on these content types'),
     '#options' => $fblikebutton_node_options,
-    '#default_value' => variable_get('fblikebutton_node_types', array('page')),
+    '#default_value' => variable_get('fblikebutton_node_types', array()),
     '#description' => t('Each of these content types will have the "like" button automatically added to them.'),
-  );/**
-  $form['fblikebutton_show_faces'] = array(
-    '#type' => 'radios',
-    '#title' => t('Display faces in the Like box'),
-    '#options' => array('true' => t('Show faces'), 'false' => t('Do not show faces'))
-    '#default_value' => variable_get('fblikebutton_show_faces', array('true')),
-    '#description' => t('Should users see the faces of other people who have "liked" the same content?'),
-  ); */
+  );
+  $form['fblikebutton_api'] = array(
+    '#type' => 'fieldset',
+    '#title' => t('FB Like Button settings'),
+    '#collapsible' => true,
+    '#collapsed' => true,
+  );
+  $form['fblikebutton_api']['fblikebutton_layout'] = array(
+    '#type' => 'select',
+    '#title' => t('Layout style'),
+    '#options' => array('standard' => t('Standard'), 'box_count' => t('Box Count'), 'button_count' => t('Button Count')),
+    '#default_value' => variable_get('fblikebutton_layout', 'standard'),
+    '#description' => t('Determines the size and amount of social context next to the button'),
+  );
+  $form['fblikebutton_api']['fblikebutton_show_faces'] = array(
+    '#type' => 'select',
+    '#title' => t('Display faces in the box'),
+    '#options' => array('show' => t('Show faces'), 'hide' => t('Do not show faces')),
+    '#default_value' => variable_get('fblikebutton_show_faces', 'show'),
+    '#description' => t('Show profile pictures below the button. Only work on Standard layout'),
+  );
+  $form['fblikebutton_api']['fblikebutton_action'] = array(
+    '#type' => 'select',
+    '#title' => t('Verb to display'),
+    '#options' => array('like' => t('Like'), 'recommend' => t('Recommend')),
+    '#default_value' => variable_get('fblikebutton_action', 'like'),
+    '#description' => t('The verb to display in the button.'),
+  );
+  $form['fblikebutton_api']['fblikebutton_font'] = array(
+	'#type' => 'select',
+	'#title' => t('Font'),
+	'#options' => array('arial' => 'Arial',
+	              'lucida+grande' => 'Lucida Grande',
+	              'segoe+ui' => 'Segoe UI',
+	              'tahoma' => 'Tahoma',
+	              'trebuchet+ms' => 'Trebuchet MS',
+	              'verdana' => 'Verdana'),
+	'#default_value' => variable_get('fblikebutton_font', 'arial'),
+	'#description' => t('The font to display in the button'),
+  );
+  $form['fblikebutton_api']['fblikebutton_color_scheme'] = array(
+	'#type' => 'select',
+	'#title' => t('Color scheme'),
+	'#options' => array('light' => t('Light'), 'dark' => t('Dark')),
+	'#default_value' => variable_get('fblikebutton_color_scheme', 'light'),
+	'#description' => t('The color scheme of box environtment'),
+  );
   return system_settings_form($form);
 }
diff --git a/fblikebutton.info b/fblikebutton.info
index ce598e4..0549c69 100644
--- a/fblikebutton.info
+++ b/fblikebutton.info
@@ -1 +1,5 @@
 name = Facebook Like Button
+description = "Display facebook like button on node"
+core = 7.x
+package = Other
+configure = admin/config/fblikebutton
diff --git a/fblikebutton.install b/fblikebutton.install
index b6d4a63..9a9f853 100644
--- a/fblikebutton.install
+++ b/fblikebutton.install
@@ -13,4 +13,8 @@ function fblikebutton_install() {
  */
 function fblikebutton_uninstall() {
   variable_del('fblikebutton_node_types');
+  variable_del('fblikebutton_show_faces');
+  variable_del('fblikebutton_layout');
+  variable_del('fblikebutton_color_scheme');
+  variable_del('fblikebutton_action');
 }
diff --git a/fblikebutton.module b/fblikebutton.module
index a6b2a95..5c319df 100644
--- a/fblikebutton.module
+++ b/fblikebutton.module
@@ -10,8 +10,8 @@
  * Implementation of hook_menu().
  */
 function fblikebutton_menu() {
-  $items['admin/settings/fblikebutton'] = array(
-    'title' => 'FB Like settings',
+  $items['admin/config/fblikebutton'] = array(
+    'title' => 'FB Like Button settings',
     'description' => 'Control which content types the "like" button should appear on.',
     'page callback' => 'drupal_get_form',
     'page arguments' => array('fblikebutton_admin_settings'),
@@ -23,47 +23,58 @@ function fblikebutton_menu() {
 }
 
 /**
- * Implementation of hook_nodeapi().
- * @todo
- * Add more config options for like button (size, etc).
- * Should $likebutton be wrapped in t()?
+ * Implementation of hook_permission()
  */
-function fblikebutton_nodeapi(&$node, $op, $teaser, $page) {
-  global $user;
-  switch ($op) {
-    case 'view':
-      // Set which node types users can "like".
-      $types_to_like = variable_get('fblikebutton_node_types', array('page'));
-      // Replace with drupal_get_path_alias() or something?
-      $likepath = $_SERVER['SCRIPT_URI'];
-      $likepath = urlencode($likepath);
-      // Facebook is doing away with FBML, so we use the iframe plugin option instead.
-      $likebutton = '<iframe src="http://www.facebook.com/plugins/like.php?href=';
-      $likebutton .= $likepath;
-      $likebutton .= '&amp;layout=standard&amp;show_faces=true&amp;width=450&amp;action=like&amp;font&amp;colorscheme=light&amp;height=80" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:450px; height:80px;" allowTransparency="true"></iframe>';
-      // Keep the fblikebutton button out of search results, etc.
-      if (!$page) {
-        break;
-      }
-      // Do not add the like button to any of the unchecked node types.
-      if (!in_array($node->type, $types_to_like, TRUE)) {
-        break;
-      }
-      // Set permissions, and keep the button out of teasers. Otherwise, there
-      // would be 50 "like" buttons on the front page of some sites... Not good.
-      if (!$teaser && user_access('users may access Like button')) {
-        $node->content['fblikebutton_button'] = array(
-            '#value' => $likebutton,
-            '#weight' => 100,
-          );
-      }
-      break;
-  }
+function fblikebutton_permission() {
+  return array(
+    'administer fblikebutton' => array(
+      'title' => t('Administer FB Like button'),
+      'description' => t('Perform administration tasks for FB Like button')
+    ),
+    'access fblikebutton' => array(
+      'title' => t('Access FB Like button'),
+    ),
+  );
 }
 
 /**
- * Implementation of hook_perm().
+ * Implementation of hook_node_view()
  */
-function fblikebutton_perm() {
-  return array('users may access Like button');
+function fblikebutton_node_view($node, $view_mode) {
+  $types = variable_get('fblikebutton_node_types', array());
+  $full = ($view_mode == 'full') ? TRUE : FALSE;
+  $show = ( ! empty($types[$node->type]) &&
+          $full && user_access('access fblikebutton'));
+
+  if ($show)
+  $node->content['fblikebutton_field'] = array(
+    '#markup' => _fblikebutton_field(),
+  );
+}
+
+function _fblikebutton_field() {
+  $url = $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
+  $http = ( ! empty($_SERVER['HTTPS'])) ? 'https://' : 'http://';
+  $addr = urlencode($http . $url);
+  $width = "100%";
+  $layout = variable_get('fblikebutton_layout', "standard"); // available: standard, box_count, button_count
+  $action = variable_get('fblikebutton_action', "like"); // available: like, recommend
+  $colorscheme = variable_get('fblikebutton_color_scheme', "light"); // available: light, dark
+  $show_faces = variable_get('fblikebutton_show_faces', "false");
+  $font = variable_get('fblikebutton_font', "arial");
+  switch ($layout) {
+    case "box_count":
+	  $height = 65;
+    case "button_count":
+      $height = 21;
+    case "standard":
+    default:
+      $height = $show_faces == "false" ? 35 : 80;
+  }
+  $height = 60;
+  
+  $params = "href=$addr&layout=$layout&show_faces=false&width&font=$font&height=$height&action=$action&colorscheme=$colorscheme";
+  $src = htmlentities($params);
+  $output = "<iframe src=\"http://www.facebook.com/plugins/like.php?$src\" scrolling=\"no\" frameborder=\"0\" style=\"border:none; overflow:hidden; width: ".$width."; height: ".$height."px; allowTransparency=\"true\"></iframe>";
+  return $output;
 }
