synchronize with master
optimize encrypt
merge encrypt branch with optimization