implemented a CRTP for process