work in progress, but it runs.