new implementation of gui widgets, cleaner structure