Maybe we should have this inherit from one of the other sockets (at a glance at least the functionality presented below seems pretty close at least to a copy/paste).