Pull out widget into its own file