some changes from kupol - 1
some changes from kupol - 2
some changes from kupol - 3