In progress.
First working version.