diff --git a/src/ConversationVC.mm b/src/ConversationVC.mm
index 8fbea93..34715e3 100644
--- a/src/ConversationVC.mm
+++ b/src/ConversationVC.mm
@@ -126,7 +126,7 @@
 -(void) setConversationUid:(const std::string)convUid model:(lrc::api::ConversationModel *)model {
     if (convUid_ == convUid && convModel_ == model)
         return;
-
+    [self clearData];
     cachedConv_ = nil;
     convUid_ = convUid;
     convModel_ = model;
diff --git a/src/MessagesVC.mm b/src/MessagesVC.mm
index 3a583f1..44e9033 100644
--- a/src/MessagesVC.mm
+++ b/src/MessagesVC.mm
@@ -35,11 +35,15 @@
 #import "delegates/ImageManipulationDelegate.h"
 #import "utils.h"
 #import "views/NSColor+RingTheme.h"
+#import "views/IconButton.h"
+#import <QuickLook/QuickLook.h>
+#import <Quartz/Quartz.h>
 
 
-@interface MessagesVC () <NSTableViewDelegate, NSTableViewDataSource> {
+@interface MessagesVC () <NSTableViewDelegate, NSTableViewDataSource, QLPreviewPanelDataSource> {
 
     __unsafe_unretained IBOutlet NSTableView* conversationView;
+    __unsafe_unretained IBOutlet NSView* containerView;
 
     std::string convUid_;
     lrc::api::ConversationModel* convModel_;
@@ -52,6 +56,7 @@
     QMetaObject::Connection modelSortedSignal_;
     QMetaObject::Connection filterChangedSignal_;
     QMetaObject::Connection interactionStatusUpdatedSignal_;
+    NSString* previewImage;
 }
 
 @property (nonatomic, strong, readonly) INDSequentialTextSelectionManager* selectionManager;
@@ -71,6 +76,7 @@
 
 @implementation MessagesVC
 
+
 //MessageBuble type
 typedef NS_ENUM(NSInteger, MessageSequencing) {
     SINGLE_WITH_TIME       = 0,
@@ -266,6 +272,11 @@
                 [result.declineButton setTarget:self];
                 break;}
             case lrc::api::interaction::Status::TRANSFER_FINISHED:
+                result = [tableView makeViewWithIdentifier:@"LeftFinishedFileView" owner:conversationView];
+                [result.transferedFileName setAction:@selector(imagePreview:)];
+                [result.transferedFileName setTarget:self];
+                [result.transferedFileName.cell setHighlightsBy:NSContentsCellMask];
+                break;
             case lrc::api::interaction::Status::TRANSFER_CANCELED:
             case lrc::api::interaction::Status::TRANSFER_ERROR:
                 result = [tableView makeViewWithIdentifier:@"LeftFinishedFileView" owner:conversationView];
@@ -284,6 +295,11 @@
                 [result.declineButton setTarget:self];
                 break;
             case lrc::api::interaction::Status::TRANSFER_FINISHED:
+                result = [tableView makeViewWithIdentifier:@"RightFinishedFileView" owner:conversationView];
+                [result.transferedFileName setAction:@selector(imagePreview:)];
+                [result.transferedFileName setTarget:self];
+                [result.transferedFileName.cell setHighlightsBy:NSContentsCellMask];
+                break;
             case lrc::api::interaction::Status::TRANSFER_CANCELED:
             case lrc::api::interaction::Status::TRANSFER_ERROR:
             case lrc::api::interaction::Status::TRANSFER_UNJOINABLE_PEER:
@@ -318,15 +334,32 @@
     if (name.length > 0) {
        fileName = [name lastPathComponent];
     }
-    result.transferedFileName.stringValue = fileName;
+    NSFont *nameFont = [NSFont userFontOfSize:14.0];
+    NSColor *nameColor = [NSColor textColor];
+    NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
+    paragraphStyle.lineBreakMode = NSLineBreakByTruncatingTail;
+    paragraphStyle.alignment = NSTextAlignmentLeft;
+    NSDictionary *nameAttr = [NSDictionary dictionaryWithObjectsAndKeys:nameFont,NSFontAttributeName,
+                                 nameColor,NSForegroundColorAttributeName,
+                                 paragraphStyle,NSParagraphStyleAttributeName, nil];
+    NSAttributedString* nameAttributedString = [[NSAttributedString alloc] initWithString:fileName attributes:nameAttr];
+    result.transferedFileName.attributedTitle = nameAttributedString;
     if (status == lrc::api::interaction::Status::TRANSFER_FINISHED) {
-        NSImage* image = [self getImageForFilePath:name];
+        NSColor *higlightColor = [NSColor grayColor];
+        NSDictionary *alternativeNametAttr = [NSDictionary dictionaryWithObjectsAndKeys:nameFont,NSFontAttributeName,
+                                  higlightColor,NSForegroundColorAttributeName,
+                                  paragraphStyle,NSParagraphStyleAttributeName, nil];
+        NSAttributedString* alternativeString = [[NSAttributedString alloc] initWithString:fileName attributes:alternativeNametAttr];
+        result.transferedFileName.attributedAlternateTitle = alternativeString;
+        NSImage* image = [self getImageForFilePath:name size:MAX_TRANSFERED_IMAGE_SIZE];
         if (([name rangeOfString:@"/"].location == NSNotFound)) {
-            image = [self getImageForFilePath:[self getDataTransferPath:interactionID]];
+            image = [self getImageForFilePath:[self getDataTransferPath:interactionID] size:MAX_TRANSFERED_IMAGE_SIZE];
         }
         if(image != nil) {
             result.transferedImage.image = [image roundCorners:14];
             [result updateImageConstraint:image.size.width andHeight:image.size.height];
+            [result.transferedImage setAction:@selector(imagePreview:)];
+            [result.transferedImage setTarget:self];
         }
     }
     [result setupForInteraction:interactionID];
@@ -492,9 +525,9 @@
 
         if( interaction.status == lrc::api::interaction::Status::TRANSFER_FINISHED) {
             NSString* name =  @(interaction.body.c_str());
-            NSImage* image = [self getImageForFilePath:name];
+            NSImage* image = [self getImageForFilePath:name size:MAX_TRANSFERED_IMAGE_SIZE];
             if (([name rangeOfString:@"/"].location == NSNotFound)) {
-                image = [self getImageForFilePath:[self getDataTransferPath:it->first]];
+                image = [self getImageForFilePath:[self getDataTransferPath:it->first] size:MAX_TRANSFERED_IMAGE_SIZE];
             }
             if (image != nil) {
                 return image.size.height + TIME_BOX_HEIGHT;
@@ -540,12 +573,12 @@
     return @(info.path.c_str());
 }
 
--(NSImage*) getImageForFilePath: (NSString *) path {
+-(NSImage*) getImageForFilePath: (NSString *) path size:(CGFloat)size {
     if (path.length <= 0) {return nil;}
     if (![[NSFileManager defaultManager] fileExistsAtPath: path]) {return nil;}
     NSImage* transferedImage = [[NSImage alloc] initWithContentsOfFile: path];
     if(transferedImage != nil) {
-        return [transferedImage imageResizeInsideMax: MAX_TRANSFERED_IMAGE_SIZE];
+        return [transferedImage imageResizeInsideMax: size];
     }
     return nil;
 }
@@ -754,4 +787,41 @@
     }
 }
 
+- (void)imagePreview:(id)sender {
+    uint64_t interId;
+    if ([[sender superview] isKindOfClass:[IMTableCellView class]]) {
+        interId = [(IMTableCellView*)[sender superview] interaction];
+    } else if ([[[sender superview] superview] isKindOfClass:[IMTableCellView class]]) {
+        interId = [(IMTableCellView*)[[sender superview] superview] interaction];
+    } else {
+        return;
+    }
+    auto it = [self getCurrentConversation]->interactions.find(interId);
+    if (it == [self getCurrentConversation]->interactions.end()) {
+        return;
+    }
+    auto& interaction = it->second;
+    NSString* name =  @(interaction.body.c_str());
+    if (([name rangeOfString:@"/"].location == NSNotFound)) {
+        name = [self getDataTransferPath:interId];
+    }
+    previewImage = name;
+    if ([QLPreviewPanel sharedPreviewPanelExists] && [[QLPreviewPanel sharedPreviewPanel] isVisible]) {
+        [[QLPreviewPanel sharedPreviewPanel] orderOut:nil];
+    } else {
+        [[QLPreviewPanel sharedPreviewPanel] updateController];
+        [QLPreviewPanel sharedPreviewPanel].dataSource = self;
+        [[QLPreviewPanel sharedPreviewPanel] setAnimationBehavior:NSWindowAnimationBehaviorDocumentWindow];
+        [[QLPreviewPanel sharedPreviewPanel] makeKeyAndOrderFront:nil];
+    }
+}
+
+- (NSInteger)numberOfPreviewItemsInPreviewPanel:(QLPreviewPanel *)panel {
+    return 1;
+}
+
+- (id <QLPreviewItem>)previewPanel:(QLPreviewPanel *)panel previewItemAtIndex:(NSInteger)index {
+    return [NSURL fileURLWithPath:previewImage];
+}
+
 @end
diff --git a/src/views/IMTableCellView.h b/src/views/IMTableCellView.h
index e9ce47e..8a92048 100644
--- a/src/views/IMTableCellView.h
+++ b/src/views/IMTableCellView.h
@@ -32,8 +32,8 @@
 @property (nonatomic, strong) IBOutlet NSTextField* statusLabel;
 @property (nonatomic, strong) IBOutlet NSBox* timeBox;
 @property (nonatomic, strong) IBOutlet NSTextField* timeLabel;
-@property (nonatomic, strong) IBOutlet NSTextField* transferedFileName;
-@property (nonatomic, strong) IBOutlet NSImageView* transferedImage;
+@property (nonatomic, strong) IBOutlet NSButton* transferedFileName;
+@property (nonatomic, strong) IBOutlet NSButton* transferedImage;
 @property (nonatomic, strong) IBOutlet NSProgressIndicator* sendingMessageIndicator;
 @property (nonatomic, strong) IBOutlet NSImageView* messageFailed;
 @property (nonatomic, strong) IBOutlet NSView* messageStatus;
diff --git a/src/views/IMTableCellView.mm b/src/views/IMTableCellView.mm
index c1b6c9d..35acca5 100644
--- a/src/views/IMTableCellView.mm
+++ b/src/views/IMTableCellView.mm
@@ -57,6 +57,8 @@
     [self.msgView setTranslatesAutoresizingMaskIntoConstraints:NO];
     [self.msgBackground setTranslatesAutoresizingMaskIntoConstraints:NO];
     [self.msgView setEditable:NO];
+    [(NSButtonCell*)transferedImage.cell setShowsStateBy:NSNoCellMask];
+    [(NSButtonCell*)transferedImage.cell setHighlightsBy:NSNoCellMask];
     acceptButton.image = [NSColor image: [NSImage imageNamed:@"ic_file_upload.png"] tintedWithColor:[NSColor greenSuccessColor]];
     declineButton.image = [NSColor image: [NSImage imageNamed:@"ic_action_cancel.png"] tintedWithColor:[NSColor redColor]];
 }
diff --git a/src/views/NSColor+RingTheme.mm b/src/views/NSColor+RingTheme.mm
index 98cd8e3..a7a107d 100644
--- a/src/views/NSColor+RingTheme.mm
+++ b/src/views/NSColor+RingTheme.mm
@@ -114,14 +114,15 @@
 
 + (NSImage*) image:(NSImage*) img tintedWithColor:(NSColor *)tint
 {
+    NSImage* image = img;
     if (tint) {
-        [img lockFocus];
+        [image lockFocus];
         [tint set];
-        NSRect imageRect = {NSZeroPoint, [img size]};
+        NSRect imageRect = {NSZeroPoint, [image size]};
         NSRectFillUsingOperation(imageRect, NSCompositeSourceAtop);
-        [img unlockFocus];
+        [image unlockFocus];
     }
-    return img;
+    return image;
 }
 
 @end
