finished reimplementation of all widgets