advanced refactoring / abstraction

words: 3 + 171 = 174
last update: