refactor to extract the keystone client to its own project