предыдущие части:1) http://sw.reactor.cc/post/1998747
2) http://sw.reactor.cc/post/1998980
3) http://sw.reactor.cc/post/2000198
4) http://sw.reactor.cc/post/2000334
кто-то минусует отдельно выкладываемые варианты, так что выложу скопом, минусуйте меня полностью