a bunch of java gui stuff