Move widget code into separate classes; Add shapes example