More re-work and re-factoring

(Work in progress)