Initial commit with mainly client code and testing framework setup.