Index: gp-templates/profile.php
===================================================================
--- gp-templates/profile.php	(revision 0)
+++ gp-templates/profile.php	(revision 0)
@@ -0,0 +1,17 @@
+<?php 
+gp_title( __('Profile &lt; GlotPress') );
+gp_breadcrumb(array( __('Profile') ));
+gp_tmpl_header();
+
+$per_page = 15;
+
+if ( isset( $_COOKIE['gp_items_per_page'] ) )
+	$per_page = (int) $_COOKIE['gp_items_per_page'];
+	
+?>
+<h2>Profile</h2>
+<form method="post">
+	<label for="per_page"><?php _e( "Number of items per page:" ); ?></label>
+	<input type="number" id="per_page" name="per_page" value="<?php echo $per_page ?>"/><br>
+	<input type="submit" value="<?php _e("Change Settings"); ?>">
+</form>
\ No newline at end of file
Index: gp-templates/header.php
===================================================================
--- gp-templates/header.php	(revision 633)
+++ gp-templates/header.php	(working copy)
@@ -22,7 +22,7 @@
 			if (GP::$user->logged_in()):
 				$user = GP::$user->current();
 				
-				printf( __('Hi, %s.'), $user->user_login );
+				printf( __('Hi, %s.'), '<a href="'.gp_url( '/profile' ).'">'.$user->user_login.'</a>' );
 				?>
 				<a href="<?php echo gp_url('/logout')?>"><?php _e('Log out'); ?></a>
 			<?php else: ?>
Index: gp-includes/routes/profile.php
===================================================================
--- gp-includes/routes/profile.php	(revision 0)
+++ gp-includes/routes/profile.php	(revision 0)
@@ -0,0 +1,17 @@
+<?php
+class GP_Route_Profile extends GP_Route_Main {
+	function profile_get() {
+		gp_tmpl_load( 'profile', array() );
+	}
+
+	function profile_post() {
+		
+		if ( isset( $_POST['per_page'] ) ) {
+			$per_page = (int) $_POST['per_page'];
+			setcookie( 'gp_items_per_page', $per_page, time()+60*60*24*365*11 );
+		}
+		
+		$this->redirect( gp_url( '/profile' ) );
+	}
+
+}
Index: gp-includes/thing.php
===================================================================
--- gp-includes/thing.php	(revision 633)
+++ gp-includes/thing.php	(working copy)
@@ -36,6 +36,9 @@
 			}
 			$this->set_static( 'static-vars-are-set', true );
 		}
+
+		if ( isset( $_COOKIE['gp_items_per_page'] ) )
+			$this->per_page =  (int) $_COOKIE['gp_items_per_page'];
 	}
 	
 	function get_static( $name, $default = null ) {
Index: gp-includes/router.php
===================================================================
--- gp-includes/router.php	(revision 633)
+++ gp-includes/router.php	(working copy)
@@ -44,6 +44,9 @@
 			'get:/login' => array('GP_Route_Login', 'login_get'),
 			'post:/login' => array('GP_Route_Login', 'login_post'),
 			'get:/logout' => array('GP_Route_Login', 'logout'),
+			
+			'get:/profile' => array('GP_Route_Profile', 'profile_get'),
+			'post:/profile' => array('GP_Route_Profile', 'profile_post'),
 
 			"get:/$project/import-originals" => array('GP_Route_Project', 'import_originals_get'),
 			"post:/$project/import-originals" => array('GP_Route_Project', 'import_originals_post'),

