add attempt4 (tdd)