add Crypt abstract class