# Suggestion for block changing

Sometimes you can't make better blocks because Snap! needs to support old projects. (For example, changing the ask [ ] and wait and answer blocks to simply answer of [].) I think I have a solution.
You know in one of the files, there's a piece of script that puts all blocks onto the user interface? Kinda goes like this:
blocks.push(block('haha'));
You can simply delete the code that puts the old blocks on and add the new blocks, with the code of the old blocks intact. That is, new projects can only use new blocks and old projects can still run well.

Yes, we've done things like that in the past, e.g., when we changed SET PEN COLOR to SET PEN [hue|saturation|brightness]. Although I'm not sure about that example because we've also done the somewhat equivalent thing of translating old blocks to new blocks when loading a project. (Not completely equivalent because in that technique, saving the project saves it with the new block.)

Honestly, a harder problem is changing all the curriculum materials that use an old block. I think there are still script pictures in BJC in which list input slots look like .

I remember seeing the same list input slot in the manual.

Oh dear, I thought I caught all those. I'll look again. Thanks.

Oh, OK then!

Page 23:

Page 29:

Page 34:

Page 38:

Page 98:

These are all the places I found with that in the manual.

Did you look through the whole manual?

Yep.

Wow! Incredible! Are you sure you caught everything?

I could be missing a page or two, but I definitely caught most, if not all, of them.

Thanks!!

I fixed them all for the 7.0 manual. That page 29 one was a pain.

The 7.0 manual doesn't seem to have those fixed yet. Also, page 14 has images that I think are from 5.0:

6.9.2 version of the same thing:

Here's an example:

        reportListLength: { // deprecated as of v6.6
dev: true,
type: 'reporter',
category: 'lists',
spec: 'length of %l'
},


isn't commented out, but any of these blocks in a project would turn into a block due to this:

        reportListLength: {
selector: 'reportListAttribute',
inputs: [['length']],
offset: 1
}

Right, I haven't recompiled and posted it yet. Waiting for the 7.0 feature list to settle down a bit.