         } else {
             topOffset = 0
         }
-        
 
         avatarImageView.center = CGPoint(x: YepConfig.chatCellGapBetweenWallAndAvatar() + halfAvatarSize, y: halfAvatarSize + topOffset)
     }
-    
-    override func awakeFromNib() {
-        super.awakeFromNib()
+
+    override init(frame: CGRect) {
+        super.init(frame: frame)
+
+        contentView.addSubview(audioContainerView)
+        audioContainerView.addSubview(bubbleImageView)
+        audioContainerView.addSubview(playButton)
+        audioContainerView.addSubview(loadingProgressView)
+        audioContainerView.addSubview(sampleView)
+        audioContainerView.addSubview(audioDurationLabel)
 
         UIView.performWithoutAnimation { [weak self] in
             self?.makeUI()
         }
-
-        bubbleImageView.tintColor = UIColor.leftBubbleTintColor()
-
-        sampleView.sampleColor = UIColor.leftWaveColor()
-
-        audioDurationLabel.textColor = UIColor.blackColor()
-
-        playButton.userInteractionEnabled = false
-        playButton.tintColor = UIColor.darkGrayColor()
-        playButton.tintAdjustmentMode = .Normal
 
         bubbleImageView.userInteractionEnabled = true
         let tap = UITapGestureRecognizer(target: self, action: "tapMediaView")
         bubbleImageView.addGestureRecognizer(tap)
-        
+
         prepareForMenuAction = { otherGesturesEnabled in
             tap.enabled = otherGesturesEnabled
         }
+    }
+
+    required init?(coder aDecoder: NSCoder) {
+        fatalError("init(coder:) has not been implemented")
     }
 
     func tapMediaView() {

        }
    }

    @IBOutlet weak var audioContainerView: UIView!

    @IBOutlet weak var bubbleImageView: UIImageView!
    
    @IBOutlet weak var sampleView: SampleView!

    @IBOutlet weak var audioDurationLabel: UILabel!

    @IBOutlet weak var playButton: UIButton!
    
    @IBOutlet weak var loadingProgressView: MessageLoadingProgressView!
    
    typealias AudioBubbleTapAction = () -> Void
    var audioBubbleTapAction: AudioBubbleTapAction?



    func makeUI() {

        let halfAvatarSize = YepConfig.chatCellAvatarSize() / 2
        
        var topOffset: CGFloat = 0
