implement first version of client