we really just need a `isCryptoEnabled` flag and the rest can just NPE if people fail to handle `client.crypto` being null....