Pull widgets into separate file / general refactor