Refactoring.
Refactoring.
Stable version.