add id and key generation support