 }
 
 class ChatInputView: UIView, UITextFieldDelegate {
+    struct Constants {
+        static let textFieldHeight = CGFloat(46.0)
+    }
+
     @objc
     dynamic var sendMessageButtonColor: UIColor? {
         willSet {
-            button.setTitleColor(newValue, for: .normal)
-            button.setTitleColor(newValue?.withAlphaComponent(0.4), for: .disabled)
-            button.setTitleColor(newValue?.withAlphaComponent(0.4), for: .highlighted)
+            sendButton.setTitleColor(newValue, for: .normal)
+            sendButton.setTitleColor(newValue?.withAlphaComponent(0.4), for: .disabled)
+            sendButton.setTitleColor(newValue?.withAlphaComponent(0.4), for: .highlighted)
         }
     }
 
     @objc
     dynamic var textViewTextColor: UIColor? {
         willSet {
-            textField.textColor = newValue
+            messageTextField.textColor = newValue
         }
     }
 
     weak var delegate: ChatInputDelegate?
 
-    private let textField: UITextField = {
+    private let messageTextField: UITextField = {
         let textField = TextFieldWithInsets()
         textField.isOpaque = false
         textField.translatesAutoresizingMaskIntoConstraints = false

        textField.returnKeyType = .send
        textField.addTarget(self, action: #selector(textFieldDidChange(_:)), for: .editingChanged)
        textField.layer.masksToBounds = true
        return textField
    }()

    private let button: UIButton = {
        let button = UIButton()
        button.titleLabel?.textAlignment = .center
        button.setTitle(String.chatSend, for: .normal)

        return view
    }()

    private lazy var chatStack: UIStackView = {
        let view = UIStackView(arrangedSubviews: [messageTextField, sendButton])
        view.distribution = .fillProportionally
        view.spacing = 4.0
        view.translatesAutoresizingMaskIntoConstraints = false
        return view
    }()

    override init(frame: CGRect) {
        super.init(frame: frame)
        commonInit()
