Commiting what I have as I haven't got time to finish at present. Don't worry about the compiler errors, it wont take me long to fix those later on today.