add scope and noDuplicateOccupy
"physical puzzle abstraction layer" complete