add final implementation and testing set