experimenting curiously recurring template pattern (CRTP)