I bet we'll want to split some of this up into more components at some point, but for now it seems fine.