added client-side test framework (this is pretty cool...)