original version
Merge https://github.com/Asoul/CA2014