system-controller: use hash instead of pointers to fetch surface objects