Рекомендую это проверить. Это довольно затягивает. Очень просто и абстрактно.