add NewWithCipher