Technically, #createSocket is public, because it is used by StateManager. In most programming languages, protected or private methods are not callable from outside a class or its children. That is not the case with #createSocket, #authenticate, or #authenticateMessage. #_write still falls in those language guidelines.