refactor part 1
refactor part 2
test readability
added sources