Shannon hackathon

@techpeace @ornellasm

I still need to work on moving some of the logic that's in the views into helper methods, but I was having trouble making it work.