add unit-test and models