Initial commit - contains some broken code so definitely WIP.