By Adrian

Не хватает модульности, но в остальном всё хорошо.