Ответы можно поискать тут и тут. Но надо много полистать.