diff -urp privatemsg/privatemsg-view.tpl.php privatemsg_new/privatemsg-view.tpl.php
--- privatemsg/privatemsg-view.tpl.php	2008-06-10 09:38:27.000000000 +0100
+++ privatemsg_new/privatemsg-view.tpl.php	2008-08-06 01:32:57.822100000 +0100
@@ -3,24 +3,19 @@
   //each file loads it's own styles because we cant predict which file will be loaded 
   drupal_add_css(drupal_get_path('module', 'privatemsg').'/styles/privatemsg-view.css');
 ?>
-<div class="privatemsg-box-fb">
-  <div class="left-column">
-    <div class="avatar-fb">
-      <?php print $author_picture; ?>
-    </div>
-  </div>
-  <div class="middle-column">
-    <div class="name">
-      <?php print $author_name_link; ?>
-    </div>
-    <div class="date">
-      <?php print $message_timestamp; ?>
-    </div>
+<div class="privatemsg-view">
+  <div class="privatemsg-author-info">
+    <div class="privatemsg-author"><?php print $author_name_link; ?></div>
+    <div class="privatemsg-author-picture"><?php print $author_picture; ?></div>
+    <div class="privatemsg-timestamp"><?php print $message_timestamp; ?></div>
   </div>
-  <div class="right-column">
-    <div class="message-body">
+  <div class="privatemsg-message">
+    <div class="privatemsg-subject">
+      <?php print $message_subject; ?>
+      </div>
+    <div class="privatemsg-body">
       <?php print $message_body; ?>
     </div>
   </div>
-  <div class="clear-both bottom-border"></div>
-</div>
\ No newline at end of file
+</div>
+<div style="clear:both;"></div>
\ No newline at end of file
diff -urp privatemsg/privatemsg.module privatemsg_new/privatemsg.module
--- privatemsg/privatemsg.module	2008-07-27 04:02:13.000000000 +0100
+++ privatemsg_new/privatemsg.module	2008-08-19 03:53:10.035900000 +0100
@@ -26,7 +26,7 @@ function privatemsg_menu() {
   //later should be a user admin screen for his private messages
   $items['messages'] = array(
     'title' => t('Private messages'),
-    'page callback' => 'privatemsg_hello',
+    'page callback' => 'privatemsg_list',
     'access arguments' => array('read privatemsg'),
     'type' => MENU_NORMAL_ITEM,
   );
@@ -35,7 +35,7 @@ function privatemsg_menu() {
     'title' => t('Inbox'),
     'page callback' => 'privatemsg_list',
     'access arguments' => array('read privatemsg'),
-    'type' => MENU_NORMAL_ITEM,
+    'type' => MENU_DEFAULT_LOCAL_TASK,
     'weight'  => -10,
   );
   $items['messages/mark-read'] = array(
@@ -43,15 +43,15 @@ function privatemsg_menu() {
     'page callback' => 'privatemsg_set_new_status',
     'page arguments' => array(null, null, 0, true),
     'access callback' => 'privatemsg_unread_count',
-    'type' => MENU_NORMAL_ITEM,
+    'type' => MENU_CALLBACK,
     'weight' => -9,
   );
   //list messages that this user is an author of
   $items['messages/sent'] = array(
-    'title' => t('Sent'),
+    'title' => t('Sent Messages'),
     'page callback' => 'privatemsg_list',
     'access arguments' => array('read privatemsg'),
-    'type' => MENU_NORMAL_ITEM,
+    'type' => MENU_LOCAL_TASK,
     'weight'  => -5,
   );
   //view a single message
@@ -69,7 +69,7 @@ function privatemsg_menu() {
     'page callback' => 'drupal_get_form',
     'page arguments' => array('privatemsg_new'),
     'access arguments' => array('write privatemsg'),
-    'type' => MENU_NORMAL_ITEM,
+    'type' => MENU_LOCAL_TASK,
     'weight' => -7,
   );
   $items['messages/new/%message_recipient'] = array(
@@ -122,7 +122,7 @@ function private_message_view_options() 
  */
 function privatemsg_privatemsg_view_template() {
   return array(
-    'privatemsg-view' => 'Default view (Facebook style)',
+    'privatemsg-view' => 'Default view',
   );
 }
 function private_message_settings() {
@@ -174,6 +174,7 @@ function privatemsg_preprocess_privatems
   $message = $vars['message'];
   $vars['author_picture'] = theme('user_picture', $message['author']);
   $vars['author_name_link'] = theme('username', $message['author']);
+  $vars['message_subject'] = $message['subject'];
   $vars['message_timestamp'] = date("M j \a\\t g:ia", $message['timestamp']);
   $vars['message_body'] = check_markup($message['body']);
 //  drupal_set_message('<pre>'. print_r('what', 1) .'</pre>');
@@ -235,12 +236,15 @@ function privatemsg_list($uid = NULL) {
    */
   
 //  drupal_set_message('<pre>'. print_r($uid, 1) .'</pre>');
-  if ( arg(1) == 'inbox') {
-    $query = _privatemsg_assemble_query('privatemsg_list', $account);
-  }
-  else if( arg(1) == 'sent') {
-    $query = _privatemsg_assemble_query('privatemsg_list_sent', $account);
-  }
+  switch (arg(1)) {
+   case 'sent':
+     $query = _privatemsg_assemble_query('privatemsg_list_sent', $account);
+     break;
+   case 'inbox':
+     $query = _privatemsg_assemble_query('privatemsg_list', $account);
+   default:
+     $query = _privatemsg_assemble_query('privatemsg_list', $account);
+ }
   $result = db_query($query);
   
   //debugging info
@@ -274,7 +278,15 @@ function privatemsg_list($uid = NULL) {
     $messages = array();
     while($row = db_fetch_array($result)) {
       $row['subject'] = l($row['subject'], 'messages/view/'. $row['id']);
-      $row['author'] = theme('username', user_load($row['author']));
+      if ($row['author']) {
+        $row['author'] = theme('username', user_load($row['author']));
+      }
+      if ($row['recipient']) {
+        $row['recipient'] = theme('username', user_load($row['recipient']));
+      }
+      if ($row['timestamp']) {
+        $row['timestamp'] = date('jS F - g:ia', $row['timestamp']);
+      }
       $messages[] = $row;
     }
 
@@ -355,20 +367,33 @@ function privatemsg_set_new_status($acco
 function privatemsg_view($pmid) {
   global $user;
   //loads the message object
-  $message = _privatemsg_load($pmid, $user->uid);
-  privatemsg_set_new_status($user, $pmid);
-  //loads the list of recipients
-  $query = _privatemsg_assemble_query('privatemsg_recipients', $message['thread_id']);
-  $result = db_query($query);
-  while ($row = db_fetch_object($result)) {
-    $message['recipients'][] = user_load($row->uid);
+  $thread = db_result(db_query('SELECT thread_id FROM {pm_index} WHERE mid = %d', $pmid));
+  $conversation = db_query('SELECT mid FROM {pm_index} WHERE thread_id = %d ORDER BY mid ASC', $thread);
+  $message_count = 0;
+  while ($result = db_fetch_array($conversation)) {
+    $pmid = $result['mid'];
+    $message = _privatemsg_load($pmid, $user->uid);
+    privatemsg_set_new_status($user, $pmid);
+    //loads the list of recipients
+    $query = _privatemsg_assemble_query('privatemsg_recipients', $message['thread_id']);
+    $result = db_query($query);
+    //while ($row = db_fetch_object($result)) {
+    //  $message['recipients'][] = user_load($row->uid); 
+    //}
+    if ($message_count == 0) {
+    $subject = $message['subject'];
+    drupal_set_title($subject);
+    }
+    
+    $message['author'] = user_load($message['author']);
+    //$output .= theme('privatemsg_to', $message);
+    $output .= theme('privatemsg_view', $message);
+    $message_count++;
   }
   
-  $message['author'] = user_load($message['author']);
-//  $message['recipient'] = user_load($message['recipient']);
-//  $output =  '<pre>'. print_r($message, 1) .'</pre>';
-  $output = theme('privatemsg_to', $message);
-  return $output . theme('privatemsg_view', $message);
+  $output .= drupal_get_form(privatemsg_new);
+  
+  return $output;
 }
 
 function privatemsg_new(&$form_state, $user = null) {
@@ -379,12 +404,41 @@ function privatemsg_new(&$form_state, $u
   if (isset($user)) {
     $recipient  = $user->name . ', ';
   }
-  if (isset($form_state['values'])) {
+  elseif (isset($form_state['values'])) {
     $form_values = $form_state['values'];
     $recipient = $form_values['recipient'];
     $subject   = $form_values['subject'];
     $body      = $form_values['body'];
   }
+  elseif (arg(1) == 'view') {
+    global $user;
+    $subject = db_result(db_query('SELECT subject FROM pm_message where mid = %d', arg(2)));
+    if (substr($subject, 3) <> 'Re:') {
+      $subject = 'Re: '. $subject;
+    }
+    $thread = db_result(db_query('SELECT thread_id FROM pm_index where mid = %d', arg(2)));
+    $recipients = db_query('SELECT recipient FROM pm_index where (thread_id = %d)', $thread);
+    $authors = db_query('SELECT author FROM pm_index where (thread_id = %d)', $thread);
+    //get data from recipient table first
+    while ($result = db_fetch_object($recipients)) {
+      if ($result->recipient == $user->uid) {
+        continue;     //skip putting author in the recipients list for now
+      }
+      $to[]= db_result(db_query('SELECT name FROM {users} WHERE uid = %d', $result->recipient));      
+    }
+    // then data from author table
+    while ($result = db_fetch_object($authors)) {
+      if ($result->author == $user->uid) {
+        continue;     //skip putting author in the recipients list for now
+      }
+      $to[]= db_result(db_query('SELECT name FROM {users} WHERE uid = %d', $result->author));      
+    }
+    
+    if ($to) {
+      $to = array_unique($to);
+      $recipient = implode(', ', $to);
+    }
+  }
 
   $form = array();
   if (isset($form_state['privatemsg_preview'])) {
@@ -408,6 +462,14 @@ function privatemsg_new(&$form_state, $u
     '#autocomplete_path'  => 'messages/user-name-autocomplete',
     //do not hardcode #maxlength, make it configurable by number of recipients, not their name length
   );
+  
+  if ($thread) {
+      $form['header']['thread_id']  = array(
+    '#type'               => 'hidden',
+    '#value'      => $thread,
+  );
+  }
+
   $form['header']['subject']    = array(
     '#type'               => 'textfield',
     '#title'              => t('Subject'),
@@ -415,6 +477,7 @@ function privatemsg_new(&$form_state, $u
     '#maxlength'          => 255,
     '#default_value'      => $subject,
   );
+
   $form['content'] = array(
     '#type'               => 'fieldset',
   );
@@ -475,6 +538,7 @@ function pm_send_validate($form, &$form_
   $message['subject'] = $form_values['subject'];
   $message['author']  = $user;
   $message['timestamp'] = time();
+  $message['thread_id'] = $form_values['thread_id'];
   
   
 //  drupal_set_message('<pre>'. print_r('one', 1) .' </pre>');  
@@ -576,7 +640,7 @@ function pm_send($form, &$form_state) {
   }
   
   drupal_set_message('Private message has been sent to '. $form_state['values']['recipient']);
-  $form_state['rebuild'] = true;      //rebuild this message for ease of use
+  //$form_state['rebuild'] = true;      //rebuild this message for ease of use
 }
 
 function privatemsg_render_preview($message) {
@@ -622,6 +686,8 @@ function privatemsg_privatemsg_list_sent
   $fragments['select'][] = 'pm.mid as id';
   $fragments['select'][] = 'pm.subject';
   $fragments['select'][] = 'pmi.author';
+  $fragments['select'][] = 'pmi.recipient';
+  $fragments['select'][] = 'pmi.timestamp';
   
   $fragments['inner_join'][] = 'INNER JOIN {pm_index} pmi ON pm.mid = pmi.mid';
   $fragments['where'][] = 'pmi.author = %d';
@@ -636,8 +702,10 @@ function privatemsg_privatemsg_list_alte
   
   $fragments['select'][] = 'pmi.mid as id';
   $fragments['select'][] = 'pm.subject';
-  $fragments['select'][] = 'pmi.author';
-  $fragments['select'][] = 'pmi.*';
+//  $fragments['select'][] = 'pmi.author';
+//  $fragments['select'][] = 'pmi.recipient';
+  $fragments['select'][] = 'pmi.timestamp';
+//  $fragments['select'][] = 'pmi.*';
   $fragments['inner_join'][] = 'INNER JOIN {pm_index} pmi ON pm.mid = pmi.mid';
   $fragments['where'][]  = 'pmi.recipient = %d';
   $fragments['query_args'][] = $account->uid;
@@ -768,6 +836,10 @@ function disallow_anon_access() {
   }
 }
 function privatemsg_user($op, &$edit, &$account, $category = NULL) {
+  global $user;
+  if ($user->uid == $account->uid || !(user_access('write privatemsg'))) {
+   return;
+  }
   switch ($op) {
     case 'view':
       $account->content['privatemsg_send_new_message'] = array(
diff -urp privatemsg/styles/privatemsg-view.css privatemsg_new/styles/privatemsg-view.css
--- privatemsg/styles/privatemsg-view.css	2008-06-10 09:39:48.000000000 +0100
+++ privatemsg_new/styles/privatemsg-view.css	2008-08-06 22:20:13.676500000 +0100
@@ -1,48 +1,49 @@
-.privatemsg-box-fb {
-  text-align  : left;
+.privatemsg-view {
+  display: table;
+  text-align: left;
+  width:100%;
+  border: 1px solid #ddd;
+  margin-top:10px;
+  background:#eee;
 }
 
-.left-column {
-  float       : left;
-  width       : 100px;
-}
-
-.privatemsg-box-fb .avatar-fb {
-  margin      : 5px;
-  text-align  : center;
-}
-.privatemsg-box-fb .picture {
- float    : none; 
- padding  : 0 0 0 0;
-}
-.middle-column {
-  float       : left;
-  width       : 150px;
-  text-align  : right;
-}
-.name {
-  margin      : 5px 15px 0px 0px;
-  font-size   : 11px;
-  font-weight : bold;
-} 
-.date {
-  color         : #777777;
-  font-size     : 9px;
-  margin        : 0px 15px 0pt 0pt;
-} 
-.right-column {
-  float       : left;
-  width       : 300px;
-}
-.clear-both {
-  clear       : both;
-}
-.bottom-border {
-  border-bottom: 1px solid #C5C5C5;
-  margin       : 0 0 0 250px;
+.privatemsg-author-info {
+  float: left;
+  text-align: center;
+  padding:5px;
+  width:110px;
 }
-.message-body {
-  padding     : 0px;
+
+.privatemsg-author-picture  .picture{
+  float:none;
+  padding:0;
+  margin:0;
+}
+
+.privatemsg-author, .privatemsg-author-picture, .privatemsg-timestamp {
+  clear:both;
+  text-align:center;
+  padding:0px;
+  margin:0 auto;
+  font-size:0.9em;
+}
+
+.privatemsg-message {
+  text-align: left;
+  border-left: 1px solid #ddd;
+  margin-left:120px;
+}
+
+.privatemsg-subject {
+  width:100%;
+  padding     : 0 5px;
+  margin      : 0px;
+  overflow    : hidden;
+  border-bottom: 1px solid #ddd;
+}
+
+.privatemsg-body {
+  padding     : 5px;
   margin      : 0 0 0 5px;
   overflow    : auto;
 }
\ No newline at end of file
