I ended up sticking a lot of the functionality into the FPS controller rather than abstracting it properly. I think with game jams you tend to throw a lot of stuff into the easiest place because... Well, because you don't have a huge amount of time to architect it properly.
It resulted in some right old spaghetti signals back and forth to get some of the features working for me!