implement most of missing UI features