adding framework and unit tests