work on gui + derive controls