более полный вариант нежели этот http://rm.reactor.cc/post/2216104