Redo scope implementation again, but now it's much cleaner