shorter, clearer
reworked project structure and class hierarchy