Initially the `buildForm` method was a lot bigger, so I moved it out to keep it clean and concise. I haven't had to use/support 5.3 for months, so incompatibilities didn't even cross my mind. It's amazing how much you come to rely on new features of a language - and you don't realise until you have to support something older again.

I'll just bang all the code in one method. It'll look horrible, but at least it will (hopefully) work in 5.3.