diff --git a/vr_ui.cpp b/vr_ui.cpp
new file mode 100644
index 0000000..b2c65e3
--- /dev/null
+++ b/vr_ui.cpp
@@ -0,0 +1,56 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "vr_ui.h"
+
+#include <minui/minui.h>
+
+VrRecoveryUI::VrRecoveryUI() :
+  x_offset(400),
+  y_offset(400),
+  stereo_offset(100) {
+}
+
+bool VrRecoveryUI::InitTextParams() {
+  if (gr_init() < 0) {
+    return false;
+  }
+
+  gr_font_size(gr_sys_font(), &char_width_, &char_height_);
+  int mid_divide = gr_fb_width() / 2;
+  text_rows_ = (gr_fb_height() - 2 * y_offset) / char_height_;
+  text_cols_ = (mid_divide - x_offset - stereo_offset) / char_width_;
+  log_bottom_offset_ = gr_fb_height() - 2 * y_offset;
+  return true;
+}
+
+void VrRecoveryUI::DrawHorizontalRule(int* y) {
+  SetColor(MENU);
+  *y += 4;
+  gr_fill(0, *y + y_offset, gr_fb_width(), *y + y_offset + 2);
+  *y += 4;
+}
+
+void VrRecoveryUI::DrawHighlightBar(int x, int y, int width, int height) const {
+  gr_fill(x, y + y_offset, x + width, y + y_offset + height);
+}
+
+void VrRecoveryUI::DrawTextLine(int x, int* y, const char* line, bool bold) const {
+  int mid_divide = gr_fb_width() / 2;
+  gr_text(gr_sys_font(), x + x_offset + stereo_offset, *y + y_offset, line, bold);
+  gr_text(gr_sys_font(), x + x_offset - stereo_offset + mid_divide, *y + y_offset, line, bold);
+  *y += char_height_ + 4;
+}
