improve client and shell