Implement most of UI