first round of refactor, tooltips and more gui stuffs