extract widget as stand alone component