implement keystore