Merging SDD into Master branch.

Same as the rest.

This branch includes many changes to the SPMP and program.