Version 10 with refactoring 1, 2, 4 and 5.