Work in progress.
It compiles