passably working but without sockets