Refactored and improved.
Merge branch 'master' of https://github.com/martin-suky/sisuan