initial commit

Work on this has been ongoing for a while.