add CI integration and unit-test