przepisane niemal od nowa :P, python jest zajebisty