advanced refactoring / abstraction

words: 3 + 415 = 418
last update: