Add an implementation and extract header file
Create test shell