I've begun CIPHER implementation in the CIPHER branch. It is just the beginning of the implementation and was moved to a branch after it broke the build (see #6).