By Carson

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