CRTP idiom