Added lot of stuf. Each commit is atomic