surface is working, also pulled out test code framework into separate repository