working on and testing of CRTP pattern