Первая часть тут: http://reactor.cc/post/2234338 
Вторая часть тут: http://reactor.cc/post/2255180