separate controller from socket