updated interface, nearly finished