You have to weigh the advantages of clear, readable code against the value of simply keeping the number of lines down - multiple inheritance (using traits) gives you fewer lines of code, but the code demands deep analysis and reasoning to be understood; and even then, it's extremely brittle.

You should favor "simple" over "easy" - your code will thank you in the long term... adding all this boilerplate was not *easy*, but the result is very *simple* - the code paths are clear and easy to follow. In my opinion, that's what makes good code - not how many lines or functions you had to write.