Initial commit - needs splitting, formatting.