Add surface roles

A `ws_surface` is a `ws_object`, isn't it? So it should be read-locked here... I guess!