Everything except for fill_adjacent implemented