improve keychain init to use eval