Loads of work to get the whole thing working