V2 done with unit tests