Basic frontend (squashed commits from @BlakeSimpson)