some changes on this branch
tested