Global TODO list: * All encoding methods should take expanded AES keys as input and corresponding modules should expose necessary key expansion functions (otherwise performance is bad)