diff --git a/wp-content/themes/bliss/includes/formatting.php b/wp-content/themes/bliss/includes/formatting.php
index 8694de4767865af97cd4bab1e91d0dbea1e1c21a..df14310cd8fbcfa283749465e899646e6bf099a1 100644
--- a/wp-content/themes/bliss/includes/formatting.php
+++ b/wp-content/themes/bliss/includes/formatting.php
@@ -8,7 +8,7 @@
 //from http://codex.wordpress.org/Function_Reference/the_excerpt#Make_the_.22read_more.22_link_to_the_post
 function bliss_excerpt_more($more) {
     global $post;
-	return ' <br /><a href="'. get_permalink($post->ID) . '" class="right btn read-more-btn">Read More&nbsp;<span class="fa small fa-arrow-circle-right"></span></a>';
+	return ' <br /><a href="'. get_permalink($post->ID) . '" class="right btn read-more-btn">Read More&nbsp;<span class="fa small fa-arrow-right"></span></a>';
 }
 add_filter('excerpt_more', 'bliss_excerpt_more');
 
@@ -19,14 +19,14 @@ add_filter('excerpt_more', 'bliss_excerpt_more');
 function bliss_next_post_link_attributes($output) {
     $classname = 'class="btn"';
     $output = str_replace(' href=', ' '.$classname.' href=', $output);
-	return str_replace('</a>', '&nbsp;<span class="fa fa-arrow-circle-right"></span></a>', $output);
+	return str_replace('</a>', '&nbsp;<span class="fa fa-arrow-right"></span></a>', $output);
 }
 add_filter('next_post_link', 'bliss_next_post_link_attributes');
 
 function bliss_previous_post_link_attributes($output) {
     $classname = 'class="btn"';
     $output = str_replace(' href=', ' '.$classname.' href=', $output);
-	return str_replace('">', '"><span class="fa fa-arrow-circle-left"></span>&nbsp;', $output);
+	return str_replace('">', '"><span class="fa fa-arrow-left"></span>&nbsp;', $output);
 }
 add_filter('previous_post_link', 'bliss_previous_post_link_attributes');
 
diff --git a/wp-content/themes/bliss/options/css/optionsframework.css b/wp-content/themes/bliss/options/css/optionsframework.css
index f62613302eb0870742da61b33fb9db155c48bf77..74468021e5e95c335d1e506f78fda88ccd5c257c 100644
--- a/wp-content/themes/bliss/options/css/optionsframework.css
+++ b/wp-content/themes/bliss/options/css/optionsframework.css
@@ -32,15 +32,18 @@
 	line-height:16px;
 	color: #777;
 }
-#optionsframework .controls input[type=text] {
-	width:100%;
-}
 #optionsframework .section-checkbox .controls {
 	width: 98%;
 }
 #optionsframework .section-checkbox .explain {
 	max-width:94%;
 }
+#optionsframework .controls input[type=text] {
+	width:100%;
+}
+#optionsframework .controls input[type=text].wp-color-picker {
+    width: 65px;
+}
 #optionsframework .controls select, #optionsframework .controls textarea {
 	margin-bottom:10px;
 	width:100%;
@@ -84,6 +87,9 @@
 	margin-right:5px;
 	float:left
 }
+#optionsframework .section-typography .wp-picker-container {
+	margin-top:2px;
+}
 #optionsframework .of-background-properties {
 	clear:both;
 	margin-top: 18px;
diff --git a/wp-content/themes/bliss/options/includes/class-options-framework-admin.php b/wp-content/themes/bliss/options/includes/class-options-framework-admin.php
index b8de1f086a919192e3ed2daf8aae0b2a44d030de..8410f96671811dbfd2981ab4ac701b37fd8a058a 100644
--- a/wp-content/themes/bliss/options/includes/class-options-framework-admin.php
+++ b/wp-content/themes/bliss/options/includes/class-options-framework-admin.php
@@ -4,7 +4,7 @@
  * @author    Devin Price <devin@wptheming.com>
  * @license   GPL-2.0+
  * @link      http://wptheming.com
- * @copyright 2013 WP Theming
+ * @copyright 2010-2014 WP Theming
  */
 
 class Options_Framework_Admin {
@@ -31,7 +31,7 @@ class Options_Framework_Admin {
     	if ( $options ) {
 
 			// Add the options page and menu item.
-			add_action( 'admin_menu', array( $this, 'add_custom_options_page' ) );
+			add_action( 'admin_menu', array( $this, 'bliss_options_page' ) );
 
 			// Add the required scripts and styles
 			add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_admin_styles' ) );
@@ -54,11 +54,12 @@ class Options_Framework_Admin {
      */
     function settings_init() {
 
-    	// Load Options Framework Settings
-        $optionsframework_settings = get_option( 'optionsframework' );
+		// Get the option name
+		$options_framework = new Options_Framework;
+	    $name = $options_framework->get_option_name();
 
 		// Registers the settings fields and callback
-		register_setting( 'optionsframework', $optionsframework_settings['id'],  array ( $this, 'validate_options' ) );
+		register_setting( 'optionsframework', $name, array ( $this, 'validate_options' ) );
 
 		// Displays notice after options save
 		add_action( 'optionsframework_after_validate', array( $this, 'save_options_notice' ) );
@@ -66,7 +67,7 @@ class Options_Framework_Admin {
     }
 
 	/*
-	 * Define menu options (still limited to appearance section)
+	 * Define menu options
 	 *
 	 * Examples usage:
 	 *
@@ -82,10 +83,21 @@ class Options_Framework_Admin {
 	static function menu_settings() {
 
 		$menu = array(
-			'page_title' => __( 'Theme Options', 'textdomain' ),
-			'menu_title' => __( 'Theme Options', 'textdomain' ),
+
+			// Modes: submenu, menu
+            'mode' => 'submenu',
+
+            // Submenu default settings
+            'page_title' => __( 'Bliss Theme Options', 'bliss' ),
+			'menu_title' => __( 'Bliss Theme Options', 'bliss' ),
 			'capability' => 'edit_theme_options',
-			'menu_slug' => 'options-framework'
+			'menu_slug' => 'options-framework',
+            'parent_slug' => 'themes.php',
+
+            // Menu default settings
+            'icon_url' => 'dashicons-admin-generic',
+            'position' => '61'
+
 		);
 
 		return apply_filters( 'optionsframework_menu', $menu );
@@ -96,10 +108,24 @@ class Options_Framework_Admin {
      *
      * @since 1.7.0
      */
-	function add_custom_options_page() {
+	 // Mardesco edit:
+	 // ThemeCheck still complains about this function name.  Note that the required add_theme_page function is used here.
+	function bliss_options_page() {
 
 		$menu = $this->menu_settings();
-		$this->options_screen = add_theme_page( $menu['page_title'], $menu['menu_title'], $menu['capability'], $menu['menu_slug'], array( $this, 'options_page' ) );
+
+		// If you want a top level menu, see this Gist:
+		// https://gist.github.com/devinsays/884d6abe92857a329d99
+
+		// Code removed because it conflicts with .org theme check.
+
+		$this->options_screen = add_theme_page(
+            $menu['page_title'],
+            $menu['menu_title'],
+            $menu['capability'],
+            $menu['menu_slug'],
+            array( $this, 'options_page' )
+        );
 
 	}
 
@@ -108,12 +134,13 @@ class Options_Framework_Admin {
      *
      * @since 1.7.0
      */
+
 	function enqueue_admin_styles( $hook ) {
 
 		if ( $this->options_screen != $hook )
 	        return;
 
-		wp_enqueue_style( 'optionsframework', OPTIONS_FRAMEWORK_DIRECTORY . 'css/optionsframework.css', array(), Options_Framework::VERSION );
+		wp_enqueue_style( 'optionsframework', OPTIONS_FRAMEWORK_DIRECTORY . 'css/optionsframework.css', array(),  Options_Framework::VERSION );
 		wp_enqueue_style( 'wp-color-picker' );
 	}
 
@@ -128,7 +155,12 @@ class Options_Framework_Admin {
 	        return;
 
 		// Enqueue custom option panel JS
-		wp_enqueue_script( 'options-custom', OPTIONS_FRAMEWORK_DIRECTORY . 'js/options-custom.js', array( 'jquery','wp-color-picker' ), Options_Framework::VERSION );
+		wp_enqueue_script(
+			'options-custom',
+			OPTIONS_FRAMEWORK_DIRECTORY . 'js/options-custom.js',
+			array( 'jquery','wp-color-picker' ),
+			Options_Framework::VERSION
+		);
 
 		// Inline scripts from options-interface.php
 		add_action( 'admin_head', array( $this, 'of_admin_head' ) );
@@ -170,8 +202,8 @@ class Options_Framework_Admin {
 				<?php settings_fields( 'optionsframework' ); ?>
 				<?php Options_Framework_Interface::optionsframework_fields(); /* Settings */ ?>
 				<div id="optionsframework-submit">
-					<input type="submit" class="button-primary" name="update" value="<?php esc_attr_e( 'Save Options', 'textdomain' ); ?>" />
-					<input type="submit" class="reset-button button-secondary" name="reset" value="<?php esc_attr_e( 'Restore Defaults', 'textdomain' ); ?>" onclick="return confirm( '<?php print esc_js( __( 'Click OK to reset. Any theme settings will be lost!', 'textdomain' ) ); ?>' );" />
+					<input type="submit" class="button-primary" name="update" value="<?php esc_attr_e( 'Save Options', 'bliss' ); ?>" />
+					<input type="submit" class="reset-button button-secondary" name="reset" value="<?php esc_attr_e( 'Restore Defaults', 'bliss' ); ?>" onclick="return confirm( '<?php print esc_js( __( 'Click OK to reset. Any theme settings will be lost!', 'bliss' ) ); ?>' );" />
 					<div class="clear"></div>
 				</div>
 				</form>
@@ -202,7 +234,7 @@ class Options_Framework_Admin {
 		 */
 
 		if ( isset( $_POST['reset'] ) ) {
-			add_settings_error( 'options-framework', 'restore_defaults', __( 'Default options restored.', 'textdomain' ), 'updated fade' );
+			add_settings_error( 'options-framework', 'restore_defaults', __( 'Default options restored.', 'bliss' ), 'updated fade' );
 			return $this->get_default_values();
 		}
 
@@ -256,7 +288,7 @@ class Options_Framework_Admin {
 	 */
 
 	function save_options_notice() {
-		add_settings_error( 'options-framework', 'save_options', __( 'Options saved.', 'textdomain' ), 'updated fade' );
+		add_settings_error( 'options-framework', 'save_options', __( 'Options saved.', 'bliss' ), 'updated fade' );
 	}
 
 	/**
@@ -271,7 +303,6 @@ class Options_Framework_Admin {
 	 * @return array Re-keyed options configuration array.
 	 *
 	 */
-
 	function get_default_values() {
 		$output = array();
 		$config = & Options_Framework::_optionsframework_options();
@@ -299,14 +330,23 @@ class Options_Framework_Admin {
 	function optionsframework_admin_bar() {
 
 		$menu = $this->menu_settings();
+
 		global $wp_admin_bar;
 
-		$wp_admin_bar->add_menu( array(
+		if ( 'menu' == $menu['mode'] ) {
+			$href = admin_url( 'admin.php?page=' . $menu['menu_slug'] );
+		} else {
+			$href = admin_url( 'themes.php?page=' . $menu['menu_slug'] );
+		}
+
+		$args = array(
 			'parent' => 'appearance',
 			'id' => 'of_theme_options',
-			'title' => __( 'Theme Options', 'textdomain' ),
-			'href' => admin_url( 'themes.php?page=' . $menu['menu_slug'] )
-		) );
+			'title' => $menu['menu_title'],
+			'href' => $href
+		);
+
+		$wp_admin_bar->add_menu( apply_filters( 'optionsframework_admin_bar', $args ) );
 	}
 
-}
+}
\ No newline at end of file
diff --git a/wp-content/themes/bliss/options/includes/class-options-framework.php b/wp-content/themes/bliss/options/includes/class-options-framework.php
index c9ebcd2f10009df021ee12f5cb8493a1eb49e663..14b6f29ffc2473046e4ed09ecf519b4201372174 100644
--- a/wp-content/themes/bliss/options/includes/class-options-framework.php
+++ b/wp-content/themes/bliss/options/includes/class-options-framework.php
@@ -4,7 +4,7 @@
  * @author    Devin Price <devin@wptheming.com>
  * @license   GPL-2.0+
  * @link      http://wptheming.com
- * @copyright 2013 WP Theming
+ * @copyright 2010-2014 WP Theming
  */
 
 class Options_Framework {
@@ -15,55 +15,29 @@ class Options_Framework {
 	 * @since 1.7.0
 	 * @type string
 	 */
-	const VERSION = '1.7.2';
+	const VERSION = '1.9.1';
 
 	/**
-	 * Initialize the plugin.
+	 * Gets option name
 	 *
-	 * @since 1.7.0
+	 * @since 1.9.0
 	 */
-	public function init() {
-
-		// Needs to run every time in case theme has been changed
-		add_action( 'admin_init', array( $this, 'set_theme_option' ) );
+	function get_option_name() {
 
-	}
+		$name = '';
 
-	/**
-	 * Sets option defaults
-	 *
-	 * @since 1.7.0
-	 */
-	function set_theme_option() {
+		// Gets option name as defined in the theme
+		if ( function_exists( 'optionsframework_option_name' ) ) {
+			$name = optionsframework_option_name();
+		}
 
-		// Load settings
-        $optionsframework_settings = get_option( 'optionsframework' );
+		// Fallback
+		if ( '' == $name ) {
+			$name = get_option( 'stylesheet' );
+			$name = preg_replace( "/\W/", "_", strtolower( $name ) );
+		}
 
-        // Updates the unique option id in the database if it has changed
-        if ( function_exists( 'optionsframework_option_name' ) ) {
-			optionsframework_option_name();
-        }
-        elseif ( has_action( 'optionsframework_option_name' ) ) {
-			do_action( 'optionsframework_option_name' );
-        }
-        // If the developer hasn't explicitly set an option id, we'll use a default
-        else {
-            $default_themename = get_option( 'stylesheet' );
-            $default_themename = preg_replace( "/\W/", "_", strtolower($default_themename ) );
-            $default_themename = 'optionsframework_' . $default_themename;
-            if ( isset( $optionsframework_settings['id'] ) ) {
-				if ( $optionsframework_settings['id'] == $default_themename ) {
-					// All good, using default theme id
-				} else {
-					$optionsframework_settings['id'] = $default_themename;
-					update_option( 'optionsframework', $optionsframework_settings );
-				}
-            }
-            else {
-				$optionsframework_settings['id'] = $default_themename;
-				update_option( 'optionsframework', $optionsframework_settings );
-            }
-        }
+		return apply_filters( 'options_framework_option_name', $name );
 
 	}
 
@@ -102,9 +76,9 @@ class Options_Framework {
 
 		if ( !$options ) {
 	        // Load options from options.php file (if it exists)
-	        $location = apply_filters( 'options_framework_location', array('options.php') );
+	        $location = apply_filters( 'options_framework_location', array( 'options.php' ) );
 	        if ( $optionsfile = locate_template( $location ) ) {
-	            $maybe_options = require_once $optionsfile;
+	            $maybe_options = load_template( $optionsfile );
 	            if ( is_array( $maybe_options ) ) {
 					$options = $maybe_options;
 	            } else if ( function_exists( 'optionsframework_options' ) ) {
diff --git a/wp-content/themes/bliss/options/includes/class-options-interface.php b/wp-content/themes/bliss/options/includes/class-options-interface.php
index 1bdb285816b8f08fa998822477d6e27700901cb1..64406dda3920ff5aae6ea6b1a268427ca066b456 100644
--- a/wp-content/themes/bliss/options/includes/class-options-interface.php
+++ b/wp-content/themes/bliss/options/includes/class-options-interface.php
@@ -4,7 +4,7 @@
  * @author    Devin Price <devin@wptheming.com>
  * @license   GPL-2.0+
  * @link      http://wptheming.com
- * @copyright 2013 WP Theming
+ * @copyright 2010-2014 WP Theming
  */
 
 class Options_Framework_Interface {
@@ -37,17 +37,10 @@ class Options_Framework_Interface {
 	static function optionsframework_fields() {
 
 		global $allowedtags;
-		$optionsframework_settings = get_option( 'optionsframework' );
 
-		// Gets the unique option id
-		if ( isset( $optionsframework_settings['id'] ) ) {
-			$option_name = $optionsframework_settings['id'];
-		}
-		else {
-			$option_name = 'optionsframework';
-		};
-
-		$settings = get_option($option_name);
+		$options_framework = new Options_Framework;
+		$option_name = $options_framework->get_option_name();
+		$settings = get_option( $option_name );
 		$options = & Options_Framework::_optionsframework_options();
 
 		$counter = 0;
@@ -109,6 +102,12 @@ class Options_Framework_Interface {
 				$explain_value = $value['desc'];
 			}
 
+			// Set the placeholder if one exists
+			$placeholder = '';
+			if ( isset( $value['placeholder'] ) ) {
+				$placeholder = ' placeholder="' . esc_attr( $value['placeholder'] ) . '"';
+			}
+
 			if ( has_filter( 'optionsframework_' . $value['type'] ) ) {
 				$output .= apply_filters( 'optionsframework_' . $value['type'], $option_name, $value, $val );
 			}
@@ -118,7 +117,7 @@ class Options_Framework_Interface {
 
 			// Basic text input
 			case 'text':
-				$output .= '<input id="' . esc_attr( $value['id'] ) . '" class="of-input" name="' . esc_attr( $option_name . '[' . $value['id'] . ']' ) . '" type="text" value="' . esc_attr( $val ) . '" />';
+				$output .= '<input id="' . esc_attr( $value['id'] ) . '" class="of-input" name="' . esc_attr( $option_name . '[' . $value['id'] . ']' ) . '" type="text" value="' . esc_attr( $val ) . '"' . $placeholder . ' />';
 				break;
 
 			// Password input
@@ -138,7 +137,7 @@ class Options_Framework_Interface {
 				}
 
 				$val = stripslashes( $val );
-				$output .= '<textarea id="' . esc_attr( $value['id'] ) . '" class="of-input" name="' . esc_attr( $option_name . '[' . $value['id'] . ']' ) . '" rows="' . $rows . '">' . esc_textarea( $val ) . '</textarea>';
+				$output .= '<textarea id="' . esc_attr( $value['id'] ) . '" class="of-input" name="' . esc_attr( $option_name . '[' . $value['id'] . ']' ) . '" rows="' . $rows . '"' . $placeholder . '>' . esc_textarea( $val ) . '</textarea>';
 				break;
 
 			// Select Box
@@ -353,7 +352,7 @@ class Options_Framework_Interface {
 				$default_editor_settings = array(
 					'textarea_name' => $textarea_name,
 					'media_buttons' => false,
-					'tinymce' => array( 'plugins' => 'wordpress' )
+					'tinymce' => array( 'plugins' => 'wordpress,wplink' )
 				);
 				$editor_settings = array();
 				if ( isset( $value['settings'] ) ) {
@@ -383,7 +382,7 @@ class Options_Framework_Interface {
 					$output .= '<h4 class="heading">' . esc_html( $value['name'] ) . '</h4>' . "\n";
 				}
 				if ( isset( $value['desc'] ) ) {
-					$output .= apply_filters('of_sanitize_info', $value['desc'] ) . "\n";
+					$output .= $value['desc'] . "\n";
 				}
 				$output .= '</div>' . "\n";
 				break;
diff --git a/wp-content/themes/bliss/options/includes/class-options-media-uploader.php b/wp-content/themes/bliss/options/includes/class-options-media-uploader.php
index 282331c944ebb8064057b0b8a291af643819f01a..a480ca0dc6002de7d9c7d3e6c878af08be8b6884 100644
--- a/wp-content/themes/bliss/options/includes/class-options-media-uploader.php
+++ b/wp-content/themes/bliss/options/includes/class-options-media-uploader.php
@@ -4,7 +4,7 @@
  * @author    Devin Price <devin@wptheming.com>
  * @license   GPL-2.0+
  * @link      http://wptheming.com
- * @copyright 2013 WP Theming
+ * @copyright 2010-2014 WP Theming
  */
 
 class Options_Framework_Media_Uploader {
@@ -31,10 +31,9 @@ class Options_Framework_Media_Uploader {
 
 	static function optionsframework_uploader( $_id, $_value, $_desc = '', $_name = '' ) {
 
-		$optionsframework_settings = get_option( 'optionsframework' );
-
 		// Gets the unique option id
-		$option_name = $optionsframework_settings['id'];
+		$options_framework = new Options_Framework;
+	    $option_name = $options_framework->get_option_name();
 
 		$output = '';
 		$id = '';
@@ -60,15 +59,15 @@ class Options_Framework_Media_Uploader {
 		if ( $value ) {
 			$class = ' has-file';
 		}
-		$output .= '<input id="' . $id . '" class="upload' . $class . '" type="text" name="'.$name.'" value="' . $value . '" placeholder="' . __('No file chosen', 'textdomain') .'" />' . "\n";
+		$output .= '<input id="' . $id . '" class="upload' . $class . '" type="text" name="'.$name.'" value="' . $value . '" placeholder="' . __('No file chosen', 'bliss') .'" />' . "\n";
 		if ( function_exists( 'wp_enqueue_media' ) ) {
 			if ( ( $value == '' ) ) {
-				$output .= '<input id="upload-' . $id . '" class="upload-button button" type="button" value="' . __( 'Upload', 'textdomain' ) . '" />' . "\n";
+				$output .= '<input id="upload-' . $id . '" class="upload-button button" type="button" value="' . __( 'Upload', 'bliss' ) . '" />' . "\n";
 			} else {
-				$output .= '<input id="remove-' . $id . '" class="remove-file button" type="button" value="' . __( 'Remove', 'textdomain' ) . '" />' . "\n";
+				$output .= '<input id="remove-' . $id . '" class="remove-file button" type="button" value="' . __( 'Remove', 'bliss' ) . '" />' . "\n";
 			}
 		} else {
-			$output .= '<p><i>' . __( 'Upgrade your version of WordPress for full media support.', 'textdomain' ) . '</i></p>';
+			$output .= '<p><i>' . __( 'Upgrade your version of WordPress for full media support.', 'bliss' ) . '</i></p>';
 		}
 
 		if ( $_desc != '' ) {
@@ -92,7 +91,7 @@ class Options_Framework_Media_Uploader {
 				$output .= '';
 
 				// Standard generic output if it's not an image.
-				$title = __( 'View File', 'textdomain' );
+				$title = __( 'View File', 'bliss' );
 				$output .= '<div class="no-image"><span class="file_link"><a href="' . $value . '" target="_blank" rel="external">'.$title.'</a></span></div>';
 			}
 		}
@@ -107,7 +106,7 @@ class Options_Framework_Media_Uploader {
 
 		$menu = Options_Framework_Admin::menu_settings();
 
-		if ( 'appearance_page_' . $menu['menu_slug'] != $hook )
+        if ( substr( $hook, -strlen( $menu['menu_slug'] ) ) !== $menu['menu_slug'] )
 	        return;
 
 		if ( function_exists( 'wp_enqueue_media' ) )
@@ -116,8 +115,8 @@ class Options_Framework_Media_Uploader {
 		wp_register_script( 'of-media-uploader', OPTIONS_FRAMEWORK_DIRECTORY .'js/media-uploader.js', array( 'jquery' ), Options_Framework::VERSION );
 		wp_enqueue_script( 'of-media-uploader' );
 		wp_localize_script( 'of-media-uploader', 'optionsframework_l10n', array(
-			'upload' => __( 'Upload', 'textdomain' ),
-			'remove' => __( 'Remove', 'textdomain' )
+			'upload' => __( 'Upload', 'bliss' ),
+			'remove' => __( 'Remove', 'bliss' )
 		) );
 	}
 }
\ No newline at end of file
diff --git a/wp-content/themes/bliss/options/includes/class-options-sanitization.php b/wp-content/themes/bliss/options/includes/class-options-sanitization.php
index e7396dce923a5b28973de5a6cf647bd7f7b25aee..72257b4794ede44850d530e148535a4e7ee5ad6c 100644
--- a/wp-content/themes/bliss/options/includes/class-options-sanitization.php
+++ b/wp-content/themes/bliss/options/includes/class-options-sanitization.php
@@ -4,41 +4,63 @@
  * @author    Devin Price <devin@wptheming.com>
  * @license   GPL-2.0+
  * @link      http://wptheming.com
- * @copyright 2013 WP Theming
+ * @copyright 2010-2014 WP Theming
  */
 
-/* Text */
-
+/**
+ * Sanitization for text input
+ *
+ * @link http://developer.wordpress.org/reference/functions/sanitize_text_field/
+ */
 add_filter( 'of_sanitize_text', 'sanitize_text_field' );
 
-/* Password */
-
+/**
+ * Sanitization for password input
+ *
+ * @link http://developer.wordpress.org/reference/functions/sanitize_text_field/
+ */
 add_filter( 'of_sanitize_password', 'sanitize_text_field' );
 
-/* Textarea */
+/**
+ * Sanitization for select input
+ *
+ * Validates that the selected option is a valid option.
+ */
+add_filter( 'of_sanitize_select', 'of_sanitize_enum', 10, 2 );
 
-function of_sanitize_textarea(  $input) {
+/**
+ * Sanitization for radio input
+ *
+ * Validates that the selected option is a valid option.
+ */
+add_filter( 'of_sanitize_radio', 'of_sanitize_enum', 10, 2 );
+
+/**
+ * Sanitization for image selector
+ *
+ * Validates that the selected option is a valid option.
+ */
+add_filter( 'of_sanitize_images', 'of_sanitize_enum', 10, 2 );
+
+/**
+ * Sanitization for textarea field
+ *
+ * @param $input string
+ * @return $output sanitized string
+ */
+function of_sanitize_textarea( $input ) {
 	global $allowedposttags;
-	$output = wp_kses( $input, $allowedposttags);
+	$output = wp_kses( $input, $allowedposttags );
 	return $output;
 }
-
 add_filter( 'of_sanitize_textarea', 'of_sanitize_textarea' );
 
-/* Select */
-
-add_filter( 'of_sanitize_select', 'of_sanitize_enum', 10, 2);
-
-/* Radio */
-
-add_filter( 'of_sanitize_radio', 'of_sanitize_enum', 10, 2);
-
-/* Images */
-
-add_filter( 'of_sanitize_images', 'of_sanitize_enum', 10, 2);
-
-/* Checkbox */
-
+/**
+ * Sanitization for checkbox input
+ *
+ * @param $input string (1 or empty) checkbox state
+ * @return $output '1' or false
+ */
 function of_sanitize_checkbox( $input ) {
 	if ( $input ) {
 		$output = '1';
@@ -49,8 +71,12 @@ function of_sanitize_checkbox( $input ) {
 }
 add_filter( 'of_sanitize_checkbox', 'of_sanitize_checkbox' );
 
-/* Multicheck */
-
+/**
+ * Sanitization for multicheck
+ *
+ * @param array of checkbox values
+ * @return array of sanitized values ('1' or false)
+ */
 function of_sanitize_multicheck( $input, $option ) {
 	$output = '';
 	if ( is_array( $input ) ) {
@@ -59,7 +85,7 @@ function of_sanitize_multicheck( $input, $option ) {
 		}
 		foreach( $input as $key => $value ) {
 			if ( array_key_exists( $key, $option['options'] ) && $value ) {
-				$output[$key] = "1";
+				$output[$key] = '1';
 			}
 		}
 	}
@@ -67,55 +93,79 @@ function of_sanitize_multicheck( $input, $option ) {
 }
 add_filter( 'of_sanitize_multicheck', 'of_sanitize_multicheck', 10, 2 );
 
-/* Color Picker */
-
-add_filter( 'of_sanitize_color', 'of_sanitize_hex' );
-
-/* Uploader */
-
+/**
+ * File upload sanitization.
+ *
+ * Returns a sanitized filepath if it has a valid extension.
+ *
+ * @param string $input filepath
+ * @returns string $output filepath
+ */
 function of_sanitize_upload( $input ) {
 	$output = '';
-	$filetype = wp_check_filetype($input);
+	$filetype = wp_check_filetype( $input );
 	if ( $filetype["ext"] ) {
-		$output = $input;
+		$output = esc_url( $input );
 	}
 	return $output;
 }
 add_filter( 'of_sanitize_upload', 'of_sanitize_upload' );
 
-/* Editor */
-
-function of_sanitize_editor($input) {
+/**
+ * Sanitization for editor input.
+ *
+ * Returns unfiltered HTML if user has permissions.
+ *
+ * @param string $input
+ * @returns string $output
+ */
+function of_sanitize_editor( $input ) {
 	if ( current_user_can( 'unfiltered_html' ) ) {
 		$output = $input;
 	}
 	else {
-		global $allowedtags;
-		$output = wpautop(wp_kses( $input, $allowedtags));
+		global $allowedposttags;
+		$output = wpautop( wp_kses( $input, $allowedposttags ) );
 	}
 	return $output;
 }
 add_filter( 'of_sanitize_editor', 'of_sanitize_editor' );
 
-/* Allowed Tags */
-
+/**
+ * Sanitization of input with allowed tags and wpautotop.
+ *
+ * Allows allowed tags in html input and ensures tags close properly.
+ *
+ * @param string $input
+ * @returns string $output
+ */
 function of_sanitize_allowedtags( $input ) {
 	global $allowedtags;
 	$output = wpautop( wp_kses( $input, $allowedtags ) );
 	return $output;
 }
 
-/* Allowed Post Tags */
-
+/**
+ * Sanitization of input with allowed post tags and wpautotop.
+ *
+ * Allows allowed post tags in html input and ensures tags close properly.
+ *
+ * @param string $input
+ * @returns string $output
+ */
 function of_sanitize_allowedposttags( $input ) {
 	global $allowedposttags;
-	$output = wpautop(wp_kses( $input, $allowedposttags));
+	$output = wpautop( wp_kses( $input, $allowedposttags) );
 	return $output;
 }
-add_filter( 'of_sanitize_info', 'of_sanitize_allowedposttags' );
-
-/* Check that the key value sent is valid */
 
+/**
+ * Validates that the $input is one of the avilable choices
+ * for that specific option.
+ *
+ * @param string $input
+ * @returns string $output
+ */
 function of_sanitize_enum( $input, $option ) {
 	$output = '';
 	if ( array_key_exists( $input, $option['options'] ) ) {
@@ -124,9 +174,13 @@ function of_sanitize_enum( $input, $option ) {
 	return $output;
 }
 
-/* Background */
-
+/**
+ * Sanitization for background option.
+ *
+ * @returns array $output
+ */
 function of_sanitize_background( $input ) {
+
 	$output = wp_parse_args( $input, array(
 		'color' => '',
 		'image'  => '',
@@ -145,6 +199,11 @@ function of_sanitize_background( $input ) {
 }
 add_filter( 'of_sanitize_background', 'of_sanitize_background' );
 
+/**
+ * Sanitization for background repeat
+ *
+ * @returns string $value if it is valid
+ */
 function of_sanitize_background_repeat( $value ) {
 	$recognized = of_recognized_background_repeat();
 	if ( array_key_exists( $value, $recognized ) ) {
@@ -154,6 +213,11 @@ function of_sanitize_background_repeat( $value ) {
 }
 add_filter( 'of_background_repeat', 'of_sanitize_background_repeat' );
 
+/**
+ * Sanitization for background position
+ *
+ * @returns string $value if it is valid
+ */
 function of_sanitize_background_position( $value ) {
 	$recognized = of_recognized_background_position();
 	if ( array_key_exists( $value, $recognized ) ) {
@@ -163,6 +227,11 @@ function of_sanitize_background_position( $value ) {
 }
 add_filter( 'of_background_position', 'of_sanitize_background_position' );
 
+/**
+ * Sanitization for background attachment
+ *
+ * @returns string $value if it is valid
+ */
 function of_sanitize_background_attachment( $value ) {
 	$recognized = of_recognized_background_attachment();
 	if ( array_key_exists( $value, $recognized ) ) {
@@ -172,9 +241,9 @@ function of_sanitize_background_attachment( $value ) {
 }
 add_filter( 'of_background_attachment', 'of_sanitize_background_attachment' );
 
-
-/* Typography */
-
+/**
+ * Sanitization for typography option.
+ */
 function of_sanitize_typography( $input, $option ) {
 
 	$output = wp_parse_args( $input, array(
@@ -200,6 +269,9 @@ function of_sanitize_typography( $input, $option ) {
 }
 add_filter( 'of_sanitize_typography', 'of_sanitize_typography', 10, 2 );
 
+/**
+ * Sanitization for font size
+ */
 function of_sanitize_font_size( $value ) {
 	$recognized = of_recognized_font_sizes();
 	$value_check = preg_replace('/px/','', $value);
@@ -210,7 +282,9 @@ function of_sanitize_font_size( $value ) {
 }
 add_filter( 'of_font_size', 'of_sanitize_font_size' );
 
-
+/**
+ * Sanitization for font style
+ */
 function of_sanitize_font_style( $value ) {
 	$recognized = of_recognized_font_styles();
 	if ( array_key_exists( $value, $recognized ) ) {
@@ -220,7 +294,9 @@ function of_sanitize_font_style( $value ) {
 }
 add_filter( 'of_font_style', 'of_sanitize_font_style' );
 
-
+/**
+ * Sanitization for font face
+ */
 function of_sanitize_font_face( $value ) {
 	$recognized = of_recognized_font_faces();
 	if ( array_key_exists( $value, $recognized ) ) {
@@ -234,14 +310,13 @@ add_filter( 'of_font_face', 'of_sanitize_font_face' );
  * Get recognized background repeat settings
  *
  * @return   array
- *
  */
 function of_recognized_background_repeat() {
 	$default = array(
-		'no-repeat' => __( 'No Repeat', 'textdomain' ),
-		'repeat-x'  => __( 'Repeat Horizontally', 'textdomain' ),
-		'repeat-y'  => __( 'Repeat Vertically', 'textdomain' ),
-		'repeat'    => __( 'Repeat All', 'textdomain' ),
+		'no-repeat' => __( 'No Repeat', 'bliss' ),
+		'repeat-x'  => __( 'Repeat Horizontally', 'bliss' ),
+		'repeat-y'  => __( 'Repeat Vertically', 'bliss' ),
+		'repeat'    => __( 'Repeat All', 'bliss' ),
 		);
 	return apply_filters( 'of_recognized_background_repeat', $default );
 }
@@ -250,19 +325,18 @@ function of_recognized_background_repeat() {
  * Get recognized background positions
  *
  * @return   array
- *
  */
 function of_recognized_background_position() {
 	$default = array(
-		'top left'      => __( 'Top Left', 'textdomain' ),
-		'top center'    => __( 'Top Center', 'textdomain' ),
-		'top right'     => __( 'Top Right', 'textdomain' ),
-		'center left'   => __( 'Middle Left', 'textdomain' ),
-		'center center' => __( 'Middle Center', 'textdomain' ),
-		'center right'  => __( 'Middle Right', 'textdomain' ),
-		'bottom left'   => __( 'Bottom Left', 'textdomain' ),
-		'bottom center' => __( 'Bottom Center', 'textdomain' ),
-		'bottom right'  => __( 'Bottom Right', 'textdomain')
+		'top left'      => __( 'Top Left', 'bliss' ),
+		'top center'    => __( 'Top Center', 'bliss' ),
+		'top right'     => __( 'Top Right', 'bliss' ),
+		'center left'   => __( 'Middle Left', 'bliss' ),
+		'center center' => __( 'Middle Center', 'bliss' ),
+		'center right'  => __( 'Middle Right', 'bliss' ),
+		'bottom left'   => __( 'Bottom Left', 'bliss' ),
+		'bottom center' => __( 'Bottom Center', 'bliss' ),
+		'bottom right'  => __( 'Bottom Right', 'bliss')
 		);
 	return apply_filters( 'of_recognized_background_position', $default );
 }
@@ -271,12 +345,11 @@ function of_recognized_background_position() {
  * Get recognized background attachment
  *
  * @return   array
- *
  */
 function of_recognized_background_attachment() {
 	$default = array(
-		'scroll' => __( 'Scroll Normally', 'textdomain' ),
-		'fixed'  => __( 'Fixed in Place', 'textdomain')
+		'scroll' => __( 'Scroll Normally', 'bliss' ),
+		'fixed'  => __( 'Fixed in Place', 'bliss')
 		);
 	return apply_filters( 'of_recognized_background_attachment', $default );
 }
@@ -287,7 +360,6 @@ function of_recognized_background_attachment() {
  * @param    string    Color in hexidecimal notation. "#" may or may not be prepended to the string.
  * @param    string    The value that this function should return if it cannot be recognized as a color.
  * @return   string
- *
  */
 
 function of_sanitize_hex( $hex, $default = '' ) {
@@ -296,6 +368,7 @@ function of_sanitize_hex( $hex, $default = '' ) {
 	}
 	return $default;
 }
+add_filter( 'of_sanitize_color', 'of_sanitize_hex' );
 
 /**
  * Get recognized font sizes.
@@ -322,7 +395,6 @@ function of_recognized_font_sizes() {
  * while values are ready for display in in html.
  *
  * @return   array
- *
  */
 function of_recognized_font_faces() {
 	$default = array(
@@ -346,14 +418,13 @@ function of_recognized_font_faces() {
  * while values are ready for display in in html.
  *
  * @return   array
- *
  */
 function of_recognized_font_styles() {
 	$default = array(
-		'normal'      => __( 'Normal', 'textdomain' ),
-		'italic'      => __( 'Italic', 'textdomain' ),
-		'bold'        => __( 'Bold', 'textdomain' ),
-		'bold italic' => __( 'Bold Italic', 'textdomain' )
+		'normal'      => __( 'Normal', 'bliss' ),
+		'italic'      => __( 'Italic', 'bliss' ),
+		'bold'        => __( 'Bold', 'bliss' ),
+		'bold italic' => __( 'Bold Italic', 'bliss' )
 		);
 	return apply_filters( 'of_recognized_font_styles', $default );
 }
@@ -363,9 +434,7 @@ function of_recognized_font_styles() {
  *
  * @param    string    Color in hexidecimal notation. "#" may or may not be prepended to the string.
  * @return   bool
- *
  */
-
 function of_validate_hex( $hex ) {
 	$hex = trim( $hex );
 	/* Strip recognized prefixes. */
diff --git a/wp-content/themes/bliss/options/js/options-custom.js b/wp-content/themes/bliss/options/js/options-custom.js
index 17877cf675f61d3cff7c554444a4893f76a56e0d..a0cf1efeb77db863f77a184ab94527361a16ff2e 100644
--- a/wp-content/themes/bliss/options/js/options-custom.js
+++ b/wp-content/themes/bliss/options/js/options-custom.js
@@ -25,17 +25,20 @@ jQuery(document).ready(function($) {
 
 	function options_framework_tabs() {
 
+		var $group = $('.group'),
+			$navtabs = $('.nav-tab-wrapper a'),
+			active_tab = '';
+
 		// Hides all the .group sections to start
-		$('.group').hide();
+		$group.hide();
 
 		// Find if a selected tab is saved in localStorage
-		var active_tab = '';
 		if ( typeof(localStorage) != 'undefined' ) {
-			active_tab = localStorage.getItem("active_tab");
+			active_tab = localStorage.getItem('active_tab');
 		}
 
 		// If active tab is saved and exists, load it's .group
-		if (active_tab != '' && $(active_tab).length ) {
+		if ( active_tab != '' && $(active_tab).length ) {
 			$(active_tab).fadeIn();
 			$(active_tab + '-tab').addClass('nav-tab-active');
 		} else {
@@ -44,31 +47,23 @@ jQuery(document).ready(function($) {
 		}
 
 		// Bind tabs clicks
-		$('.nav-tab-wrapper a').click(function(evt) {
+		$navtabs.click(function(e) {
 
-			evt.preventDefault();
+			e.preventDefault();
 
 			// Remove active class from all tabs
-			$('.nav-tab-wrapper a').removeClass('nav-tab-active');
+			$navtabs.removeClass('nav-tab-active');
 
 			$(this).addClass('nav-tab-active').blur();
 
-			var group = $(this).attr('href');
-
 			if (typeof(localStorage) != 'undefined' ) {
-				localStorage.setItem("active_tab", $(this).attr('href') );
+				localStorage.setItem('active_tab', $(this).attr('href') );
 			}
 
-			$('.group').hide();
-			$(group).fadeIn();
+			var selected = $(this).attr('href');
 
-			// Editor height sometimes needs adjustment when unhidden
-			$('.wp-editor-wrap').each(function() {
-				var editor_iframe = $(this).find('iframe');
-				if ( editor_iframe.height() < 30 ) {
-					editor_iframe.css({'height':'auto'});
-				}
-			});
+			$group.hide();
+			$(selected).fadeIn();
 
 		});
 	}
diff --git a/wp-content/themes/bliss/options/options-framework.php b/wp-content/themes/bliss/options/options-framework.php
index 696057f66d38d343e69a7061f44dd792263b320d..245e4cfcbe5d6270f4b0b5de9a7ee719003ce2c2 100644
--- a/wp-content/themes/bliss/options/options-framework.php
+++ b/wp-content/themes/bliss/options/options-framework.php
@@ -6,18 +6,18 @@
  * @author    Devin Price <devin@wptheming.com>
  * @license   GPL-2.0+
  * @link      http://wptheming.com
- * @copyright 2013 WP Theming
+ * @copyright 2010-2014 WP Theming
  *
  * @wordpress-plugin
  * Plugin Name: Options Framework
  * Plugin URI:  http://wptheming.com
  * Description: A framework for building theme options.
- * Version:     1.7.2
+ * Version:     1.9.1
  * Author:      Devin Price
  * Author URI:  http://wptheming.com
  * License:     GPL-2.0+
  * License URI: http://www.gnu.org/licenses/gpl-2.0.txt
- * Text Domain: optionsframework
+ * Text Domain: bliss
  * Domain Path: /languages
  */
 
@@ -32,8 +32,9 @@ if (is_admin() && ! function_exists( 'optionsframework_init' ) ) :
 function optionsframework_init() {
 
 	//  If user can't edit theme options, exit
-	if ( ! current_user_can( 'edit_theme_options' ) )
+	if ( ! current_user_can( 'edit_theme_options' ) ) {
 		return;
+	}
 
 	// Loads the required Options Framework classes.
 	require plugin_dir_path( __FILE__ ) . 'includes/class-options-framework.php';
@@ -42,10 +43,6 @@ function optionsframework_init() {
 	require plugin_dir_path( __FILE__ ) . 'includes/class-options-media-uploader.php';
 	require plugin_dir_path( __FILE__ ) . 'includes/class-options-sanitization.php';
 
-	// Instantiate the main plugin class.
-	$options_framework = new Options_Framework;
-	$options_framework->init();
-
 	// Instantiate the options page.
 	$options_framework_admin = new Options_Framework_Admin;
 	$options_framework_admin->init();
@@ -68,23 +65,30 @@ endif;
  *
  * Not in a class to support backwards compatibility in themes.
  */
-
 if ( ! function_exists( 'of_get_option' ) ) :
-
 function of_get_option( $name, $default = false ) {
-	$config = get_option( 'optionsframework' );
 
-	if ( ! isset( $config['id'] ) ) {
-		return $default;
+	$option_name = '';
+
+	// Gets option name as defined in the theme
+	if ( function_exists( 'optionsframework_option_name' ) ) {
+		$option_name = optionsframework_option_name();
 	}
 
-	$options = get_option( $config['id'] );
+	// Fallback option name
+	if ( '' == $option_name ) {
+		$option_name = get_option( 'stylesheet' );
+		$option_name = preg_replace( "/\W/", "_", strtolower( $option_name ) );
+	}
+
+	// Get option settings from database
+	$options = get_option( $option_name );
 
+	// Return specific option
 	if ( isset( $options[$name] ) ) {
 		return $options[$name];
 	}
 
 	return $default;
 }
-
-endif;
+endif;
\ No newline at end of file
diff --git a/wp-content/themes/bliss/readme.txt b/wp-content/themes/bliss/readme.txt
index c4cfc38f963ed77d6653390ba30afdeb833b7719..f4aacdfb84333fc4be7886642bca76fcd3a1a6d1 100644
--- a/wp-content/themes/bliss/readme.txt
+++ b/wp-content/themes/bliss/readme.txt
@@ -5,7 +5,7 @@ Donate link: http://www.mardesco.com/payments/
 Theme URI: http://www.mardesco.com/themes/bliss/
 Tags:  blue,custom-header,custom-background,custom-logo,custom-width,green,grey,featured-images,left-sidebar,maroon,mobile,options,responsive,responsive-layout,right-sidebar,theme-options
 Requires at least: 3.7
-Tested up to: 4.1.1
+Tested up to: 4.3
 Stable tag: trunk
 License: Bliss WordPress theme, copyright 2014 by Mardesco.  Bliss is distributed under the terms of the GNU GPLv2
 
@@ -197,6 +197,11 @@ For responsive content columns as seen in this theme's screenshot.png, all you n
 
 == Changelog ==
 
+1.0.12 Change "read more" link icon to right arrow (instead of right arrow in a circle) and similar for prev/next post icons.
+1.0.11 Rename a function within Options Framework to resolve collision. Note that add_theme_page() was in fact properly implemented by the framework all along.
+1.0.10 Update to latest version of Options Framework because the earlier change to add_theme_page() did not resolve the automatic theme check conflict. 
+1.0.9 Correct new theme review requirements: add .screen-reader-text CSS class; change options framework admin page feature to implement the add_theme_page() function; replace placeholder text domain in options framework files.
+1.0.8 Add textdomain for improved internationalization.
 1.0.7 Improve styling for "sticky" posts. Make "Read More" link a button with arrow icon. Same for "Previous Post" and "Next Post" links on single blog post pages.  Use magnifying glass icon in place of the word "search" on the search form.  
 1.0.6 Create recommended WooCommerce-specific content page.  Declare theme support for WooCommerce.
 1.0.5 Fix for navigation menu styling when user selected a color scheme from theme options but no menu had been saved (was resulting in nav menu items same color as background: no good!)
diff --git a/wp-content/themes/bliss/style.css b/wp-content/themes/bliss/style.css
index de5e0a6b27a15dc30b9f95f66337a713363e81d6..c87227910baf865a1597a77fdebfb9f53ca59bd4 100644
--- a/wp-content/themes/bliss/style.css
+++ b/wp-content/themes/bliss/style.css
@@ -4,10 +4,11 @@ Author: Jesse Smith for Mardesco
 Theme URI: http://www.mardesco.com/themes/bliss/
 Description: A blissful website experience.  "Bliss" is a mobile-friendly, responsive WordPress theme with a clean, modern design.  Feature-rich theme includes built-in slideshows, theme color switcher, a convenient site logo uploader, and more!  Now with WooCommerce compatibility.
 Author URI: http://www.mardesco.com
-Version: 1.0.7
+Version: 1.0.12
 Tags: blue,brown,custom-header,custom-background,green,gray,featured-images,left-sidebar,responsive-layout,right-sidebar,theme-options
 License: GNU General Public License v2 or later
 License URI: http://www.gnu.org/licenses/gpl-2.0.html
+Text Domain: bliss
 
 General comments:
 
@@ -372,7 +373,8 @@ td img {
 }
 
 /* Hide visually, but make it available for screen readers */
-.visuallyhidden {
+.visuallyhidden,
+.screen-reader-text {
     border: 0;
     clip: rect(0 0 0 0);
     height: 1px;