all methods implemented except solution