adding IClient interface and few other stuff