Initial work in progress version.