implement except markCell. BUT NO TESTd