- abstracted symmetric decryption so the actual cipher object construction and ciphertext decryption happens in one place to make the code easier to maintain
 - moved asymmetric decryption into PKESessionKey as it makes more sense to have it in the one place where asymmetric decryption is even used