# Thousand Island v1.5.0 - Table of Contents > A simple & modern pure Elixir socket server ## Pages - Changelog - [CHANGELOG](changelog.md) ## Modules - [ThousandIsland](ThousandIsland.md): Thousand Island is a modern, pure Elixir socket server, inspired heavily by [ranch](https://github.com/ninenines/ranch). It aims to be easy to understand & reason about, while also being at least as stable and performant as alternatives. - [ThousandIsland.Handler](ThousandIsland.Handler.md): `ThousandIsland.Handler` defines the behaviour required of the application layer of a Thousand Island server. When starting a Thousand Island server, you must pass the name of a module implementing this behaviour as the `handler_module` parameter. Thousand Island will then use the specified module to handle each connection that is made to the server. - [ThousandIsland.HandlerConfig](ThousandIsland.HandlerConfig.md): A minimal config struct containing only the fields needed by connection handlers. - [ThousandIsland.Logger](ThousandIsland.Logger.md): Logging conveniences for Thousand Island servers - [ThousandIsland.ServerConfig](ThousandIsland.ServerConfig.md): Encapsulates the configuration of a ThousandIsland server instance - [ThousandIsland.Socket](ThousandIsland.Socket.md): Encapsulates a client connection's underlying socket, providing a facility to read, write, and otherwise manipulate a connection from a client. - [ThousandIsland.Telemetry](ThousandIsland.Telemetry.md): The following telemetry spans are emitted by thousand_island - Transport - [ThousandIsland.Transport](ThousandIsland.Transport.md): This module describes the behaviour required for Thousand Island to interact with low-level sockets. It is largely internal to Thousand Island, however users are free to implement their own versions of this behaviour backed by whatever underlying transport they choose. Such a module can be used in Thousand Island by passing its name as the `transport_module` option when starting up a server, as described in `ThousandIsland`. - [ThousandIsland.Transports.SSL](ThousandIsland.Transports.SSL.md): Defines a `ThousandIsland.Transport` implementation based on TCP SSL sockets as provided by Erlang's `:ssl` module. For the most part, users of Thousand Island will only ever need to deal with this module via `transport_options` passed to `ThousandIsland` at startup time. A complete list of such options is defined via the `t::ssl.tls_server_option/0` type. This list can be somewhat difficult to decipher; by far the most common values to pass to this transport are the following - [ThousandIsland.Transports.TCP](ThousandIsland.Transports.TCP.md): Defines a `ThousandIsland.Transport` implementation based on clear TCP sockets as provided by Erlang's `:gen_tcp` module. For the most part, users of Thousand Island will only ever need to deal with this module via `transport_options` passed to `ThousandIsland` at startup time. A complete list of such options is defined via the `t::gen_tcp.listen_option/0` type. This list can be somewhat difficult to decipher; by far the most common value to pass to this transport is the following