first attempt at reactive ui