Посмотрите вот тут
полного понимания не гарантирую.