client code is fully functional