intro = I = iron

IRC /I-R-C/ n.

[Internet Relay Chat] A worldwide "party line" network that allows one to converse with others in real time. IRC is structured as a network of Internet servers, each of which accepts connections from client programs, one per user. The IRC community and the Usenet and MUD communities overlap to some extent, including both hackers and regular folks who have discovered the wonders of computer networks. Some Usenet jargon has been adopted on IRC, as have some conventions such as emoticons. There is also a vigorous native jargon, represented in this lexicon by entries marked `[IRC]'. See also talk mode.

--The Jargon File version 4.3.1, ed. ESR, autonoded by rescdsk.

Internet Relay Chat, an internet protocol/system for real-time chat. The current version of the protocol is defined in RFC 1459. However, many changes in how things actually work have occured since then, and RFCs 2810, 2811, 2812 and 2813 have replaced it in some aspects, although the original RFC is really the authorative document.

IRC networks are typically made up of multiple servers, to which individual clients (ie, people) connect. The protocol defines both client<->server and server<->server communications, which are in fact very similar. There is nothing to stop an IRC server using a different protocol for server<->server communications anyway, since it's not really viable to connect two different ircd versions (IRC daemons, ie two different versions of the server software) together, as they have extended and changed the protocol significantly.

People can talk both in public (or private) channels and in private messages (queries). Networks often provide irc services, and people often run client-side scripts and bots to control/manage channels and the such.

An example

A typical few minutes of a chat as seen from a client (it's usual to connect to IRC using a specialized program, such as mIRC, irssi, BitchX or X-Chat) might consist of the following, for instance (this is a sample from #everything):

! TallRoo ( has left #everything
<getzburg> eek!
* getzburg hides from the ninja
<jethro_bodine> snowy's hair is a bit less wonky
<dmd> Well she had just gotten out of the shower.
* Snowbelle laughs
<mkb> my girlfriend doesn't look anything like either of those
<mkb> except for the glasses really
<dmd> Which is why she's got that "get that damn camera out of my face" look.
! fuzzie|dinner has changed her nick to fuzzie

Here, you can see someone leaving the channel (a "part" - people can attach an optional message to their parts/quits if they wish), people talking (including special messages called actions, which you've probably seen in the chatterbox (/me), and me, changing my nickname.

Operators/Voiced Users and Modes

Channel operators, set by mode +o within a channel, are able to modify the ban list of that channel, kick (forcefully remove) people from that channel, change that channels modes, change the topic if +t is set on that channel, and many other things. Only opped and voiced users (mode +v) are able to speak if the channel is set mode +m ('moderated'). Other users in the channel can only listen. It is also important to mention +n, which means 'no outside messages': this specifies that users must actually be in the channel in order to be allowed to send messages to it. This is set for almost all channels.

Note that IRC operators (referred to in the literals when you initially connect tothe server) are something completely different; they are people with power over the IRC servers themselves, who usually have full control to ban you from the server you are on or the whole network, to forcefully kick you off the network, and other such things.

"But what are modes?", I hear you ask. They're single letters, sometimes (in the case of channels, with +b for bans, +o for operators, +v for voices) associated with an IRC username, which specify special options associated with a user or channel. When an option is set, the letter is prefixed with a +. To set the option, the command is 'MODE +x' where 'x' is the option letter, and to unset this, just replace the + (plus) with a - (minus). Many users set themselves 'invisible', meaning they don't show up in various list commands as being online, by setting their mode +i. Many modes cannot be set by normal users, such as the user +o (IRC operator) mode, for obvious security reasons, and of course, as I said above, only channel operators can modify channel modes.

You'll probably be happy to know that most IRC clients wrap this all up in a bunch of checkboxes to set/unset modes.

A basic walkthrough of the client protocol

This is a bit complicated, but worth knowing, in my opinion.

It's sometimes useful to be able to connect to IRC via telnet. I'm going to step through a simple session of this, which will also serve to help me illustrate the basics of how the protocol works. I'm not going to cover the server protocol here; basically it works by simply relaying messages through the network to all other servers. Take a look at the netsplit node for an explanation of the 'tree' layout of IRC networks. Note that, in the ouput below, I manually wrapped one of the notice lines, to try and stop this writeup from being wider than it already is.

fuzzie@junglejazz:/home/e2stuff$ telnet 6667
Connected to
Escape character is '^]'. NOTICE * :*** Looking up your hostname... NOTICE * :*** Found your hostname in cache NOTICE * :*** Checking ident... NOTICE * :*** Checking for open SOCKS server... NOTICE * :*** No ident response; username prefixed with ~ NOTICE * :*** No SOCKS server found
USER moose :Alyssa Milburn
NICK moose NOTICE moose :*** If you need assistance with connecting to this server,,
please refer to: 001 moose :Welcome to Internet Relay Chat moose! 002 moose :Your host is, running version cyclone0.3.1.1 003 moose :This server was created Thu Apr 11 2002 at 01:32:22 PDT 004 moose cyclone0.3.1.1 acdfgikloszCOZ abiklmnopstvR 008 moose NOQUIT TOKEN WATCH=128 SAFELIST :are available on this server 251 moose :There are 306 users and 328 invisible on 8 servers 252 moose 16 :operator(s) online 253 moose 1 :unknown connection(s) 254 moose 184 :channels formed 255 moose :I have 131 clients and 2 servers 265 moose :Current local users: 131  Max: 154 266 moose :Current global users: 634  Max: 851 375 moose :- Message of the Day - 372 moose :- 27/7/2002 16:49 +00:00 372 moose :-                 ___  _            _     _  _  ___  _____ 372 moose :-                / __|| | __ _  ___| |_  | \| || __||_   _| 372 moose :-                \__ \| |/ _ |(_-<| '  \ |  . || _|   | |
(insert the rest of the MOTD here, omitted for brevity) 376 moose :End of /MOTD command.
JOIN #monkeysoypants
:moose! JOIN :#monkeysoypants 332 moose #monkeysoypants : | edev: user data - Go read. 333 moose #monkeysoypants fuzzie 1027734235 353 moose = #monkeysoypants :moose @Xen @bz2 wamckee|coding fuzzie Helios +Stat-bot 366 moose #monkeysoypants :End of /NAMES list.
:ChanServ! NOTICE moose :hola!
PRIVMSG #monkeysoypants :hi
:fuzzie! PRIVMSG #monkeysoypants :hi, moose.
:fuzzie! PRIVMSG #monkeysoypants :ACTION waves at moose.
PRIVMSG #monkeysoypants :bye.
QUIT :whee.
ERROR :Closing Link: moose[] (Quit: whee.)
Connection closed by foreign host.

Okay, now let's run through this bit-by-bit. First, I telnet to port 6667 on the server, which is the usual IRC port. Then, the server sends several NOTICE commands. Note that they're prefixed with the server name, with a colon in front - this is the way all IRC messages are structured, they're in plain-text, on a single line, with a colon (usually) followed by the source of the message (a server or another user on the network, typically).

It then waits for me to send a USER command - the portions in italics are those portions I typed - which has four parameters:

  • My requested username (full IRC usernames are made up of three parts, a nickname, a username and a hostname. The username is typically confirmed by attempting to contact identd on the connecting host (computer); most IRC clients fake this if they're running on a host without identd running (usually only *nix hosts). As you can see from the initial NOTICEs, my username will be prefixed with a tilde character as I the server could not connect to identd. This basically dates back to the time when most people connected to IRC networks from multi-user hosts; it was a reliable way to identify individual people on a computer, mainly for banning purposes. Nowadays bans are usually based on just hostnames, instead.
  • My hostname. This is usually ignored, the server works it out itself, as you can again see from the notices; however, when the server passes my USER command onto other servers on the network, it will replace this hostname with my real hostname, so the other servers don't have to work it out.
  • The servername. Almost always ignored for the same reason as the hostname, and again replaced so the other servers know whch server the user is connected to.
  • My realname. This can be whatever I want, and is made available to other users when they use the /whois command. Note that I have prefixed it with a colon, which means "Use characters until the end of the line to make up this parameter"; without it, only the letters up to the first space would be used (so my realname would be 'Michael', in this example). It's obviously vital to use it when sending messages.

My next command is a NICK command, which has one parameter: the nickname I want. I can change this later by simply sending another NICK command. After I've sent both USER and NICK, some servers may request a password, which is supplied via the PASS command, but in this case the server only requires those two.

The server then sends a bunch of notices and literals. Literals are essentially specialised notices of a certain type which are defined in the RFC - you can guess at them, as plain-text versions are also included. Note that IRC clients can easily parse the necessary data out and use it in, for instance, GUI elements, or convert it to different languages.

I then send a 'JOIN #monkeysoypants' command, which, as you can guess, is a command which tells the server to place me inside the channel called '#monkeysoypants'. Channels are usually prefixed with '#', although there are different prefixes which do different things (such as channels which are only present on one server of the network, or channels in which there are no operators).

I am now part of the channel, and recieve a message telling me that I have joined (other users inside the channel would recieve the same message). If I wasn't inserted into the channel, an error message would be returned, such as the channel needing a key (password) in order to be joined, or me being banned from the channel for some reason. A ban consists of the three portions of an IRC username I described above, and can use the '*' wildcard if necessary. For instance, a typical ban might be 'l33tdude@~bob@*', which means anyone with a nickname of 'l33tdude' and an ident (username) of '~bob', with a hostname ending in, is banned from joining the channel. Note that some networks support ban 'exceptions', allowing specific masks to be allowed to join the channel despite a ban, and also that if a ban is set while people matching the ban mask are still in the channel, they are unable to speak unless voiced or opped (more on that below).

The next line, literal 332, is a 'TOPIC' literal, consisting of two parameters: the channel name, and the topic for that channel. The line after that, literal 333, provides a nickname and a timestamp, telling you who last changed the topic and when. If a channel has mode '+t' (more on modes below), then only channel operators can change the topic; otherwise, anyone is able to.

The next two lines consist of a 'NAMES' literal, containing a list of nicknames, and a literal notifying you that the 'NAMES' list has finished; this is necessary as if a large number of users are in a channel, several 'NAMES' literals may be sent. You may notice that some of these nicknames are prefixed by '@' or '+': '@' means channel operator, and '+' means voiced, again, see the section below foran explanation of what these are.

ChanServ, a part of IRC services on slashnet, then NOTICEs me a welcome message, as it has been configured to do. I then send a message to the channel using the PRIVMSG command (by replacing the channel name with a nick in the PRIVMSG command, I could send a message to an individual user). I then recieve a reply from someone else in the channel, followed by an action (/me) from them, and then I send another message and then a QUIT command, causing the server to drop me.

Did I miss anything obvious? /msg me and tell me.

IRC is the standard abbreviation for Internet Relay Chat. IRC is an internet protocol that allows you to chat in real time. You can talk in groups (called channels), or through private messages. Typically, a channel is set up to discuss a specific topic, however in most cases it is a free-for-all with pretty much anything up for conversation. For those unfamiliar with IRC, think of it like the E2 chatterbox, only the messages show up immediately (you don't have to keep reloading to see the new messages) and scroll by as new messages are added. If you'd like to introduce yourself to IRC with some users you are already familiar with, try out #everything.

To use IRC, you must connect to an IRC server with an IRC client or through a direct telnet connection. Common clients include:

Often IRC is a fast paced environment with channels including hundreds of people at once. Because of this, abbreviations are used to enable the users to type and read quickly. Most internet savy users will recognise these abbreviations and acronyms, but keep in mind, they all got their start on IRC.

  • AFK - away from keyboard
  • AFAIK - as far as I know
  • ATM - at the moment
  • BRB - be right back
  • IIRC - if I recall correctly
  • IMHO - in my humble opinion
  • IRL - in real life
  • LOL - laughing out loud
  • WB - welcome back
  • YMMV - your milage may vary
  • obviously there are hundreds more, but these give you the basic idea

IRC Glossary

  • ban - to temporarily or perminantly disallow a user from connecting to the IRC network
  • ban evasion - to login to an IRC network under a different alias after previously being banned
  • channel - a "room" on an IRC network. Channel names usually start with a hash sign (#)
  • channel operator - basically a channel administrator. They can kick people out of the channel, ban people from the channel, set the channel topic, etc.
  • DALnet - a very large IRC network that was formed by Dalvenjah to be a more friendly network than EFnet
  • Direct Client to Client (DCC) protocol - allows you to connect directly to another IRC client (as opposed to connecting through the IRC network)
  • EFnet - one of the oldest IRC networks
  • fserv - a DCC file server allowing IRC users to send files to each other
  • flood - when someone sends numerous lines to a channel in a short amount of time
  • IRC admin - someone who administrates an IRC server
  • IRC bot - A program that connects to IRC and appears to be a real user and can interact with users by providing information, conversing through AI, or protecting a channel
  • IRC network - a network of one or more IRC servers connected together
  • IRC operator - someone who helps to run and maintain an IRC server or IRC network
  • IRC server - a computer/server that is part of an IRC network which is running IRC software that allows users to connect and chat
  • kick - to force someone out of a channel
  • kill - to disconnect someone from an IRC server
  • local channel - a channel only available on one IRC server, and not the entire IRC network. Local channels have names starting with "&"
  • Message of the Day (MOTD) - a message that is shown when you connect to an IRC server that usually displays information on who runs the server, and any information the IRC admin wants you to know
  • netsplit - sometimes, two IRC servers will loose contact with each other and cause a split in the IRC network that can cause various temporary problems
  • nick - your nickname on IRC (which is changable)
  • NickServ - a service that lets you register your nick on an IRC network so that no one else can use it
  • op - abbreviation for channel operator
  • oper or sysop - abbreviation for IRC operator
  • Undernet - an IRC network originally formed because EFnet was getting to large

IRC Commands

You enter an IRC command by typing a forward slash ('/') followed by the command name, followed by any parameters (if applicable).

Common Commands

  • /away - Syntax: /away {away_message}
    The away command allows you to let other users know that you are AFK. The away message will be displayed to users to try to /msg you or do a /whois lookup on you.

  • /help - Syntax: /help
    The help command displays the list of valid commands that the server will recognise.

  • /join - Syntax: /join {channel_name}
    The join command allows you to enter/join a specified channel. For those unfamiliar with IRC, and channel is like a room on E2. Most channels start with the hash (or pound) sign (#), although local channels begin with an ampersand (&), and modeless channels start with a plus sign (+). The #, &, or + must be included when typing the channel name.

  • /leave - Syntax: /leave
    The leave command causes you to leave a channel. Most IRC servers use the /part command instead.

  • /list - Syntax: /list OR /list {wildcard}
    The list command will display a list of channels. If you use the wildcard option, it will display a list of channels that match the wildcard you entered.

  • /me - Syntax: /me {action_message}
    The me command displays your channel message as an action. It works exactly like on E2.

  • /msg - Syntax: /msg {nick_of_receiver} {message_text}
    The msg command allows you to send a private message to a specified user (See also /privmsg)

  • /nick - Syntax: /nick {your_nick}
    The nick command sets your nick (nickname) that will be displayed next to all of your chat dialog, and the name that other users will be able to private message you with (see also /msg and /privmsg).

  • /part - Syntax: /part
    The part command causes you to leave a channel (See also /partall and /quit)

  • /quit - Syntax: /quit {optional_quit_message}
    The quit command quits/disconnects from the IRC server. The optional quit message is displayed when you leave - perfect for allowing you to get the last word.

  • /say - Syntax: /say {message_text}
    The say command allows you to speak in a channel. Since say is the default command, it is not required to actually type this.

  • /who (1) - Syntax: /who {nick}
    The who command allows you to find out which channel a certain nick is in. You can use wildcards (*) in the nick to match similar names (See also /whois)

  • /who (2) - Syntax: /who *.{domain_name}
    The who command can also allow you to find out which users are connecting from a specific domain. This can help you to find people in your geographic area, or who have the same ISP as you. It can also be helpful for tracking someone down who has changed their nick (See also /whois)

  • /whois - Syntax: /whois {nick} OR /whois {nick1,nick2,nick3,etc}
    The whois command allows you to get basic information about one or more nicks, including their internet address, what channel they are in, and what server they are on. Some servers hide this information for security.

Additional Commands

  • /admin - Syntax: /admin
    The admin command displays some basic administrative data about the server.

  • /ignore - Syntax: /ignore [+|-]{nick}
    The ignore command filters out all messages (public and private) from being displayed on your screen. Since this is a client command, your computer still receives all the messages (and therefore user the bandwidth), but they are just not displayed to you. This is not supported by all clients.

  • /info - Syntax: /info
    The info command displays copyright info and developer credits.

  • /invite - Syntax: /invite {nick} {channel}
    The invite command sends an invitation to a user to join your channel. Note that some channels require an invite to allow you to enter (See /mode (3)). You must be an op to send an invitation.

  • /ison - Syntax: /ison {nick1 nick2 nick3}
    The ison (is on) command allows you to check if the specified users are online. You may specify multiple nicks, and the users that are online will be displayed back to you.

  • /kick - Syntax: /kick {channel_name} {nick} {reason}
    The kick command allows you to kick a person out of a channel. Only ops can kick.

  • /links - Syntax: /link
    The link command displays a view of how the IRC network is connect. This command does not work on all servers (See also /maps)

  • /lusers - Syntax: /lusers
    The lusers (list users) command displays information on the number of users, operators, channels, clients, and servers online. It is likely no cooincidence that this is very simliar to "losers".

  • /map - Syntax: /map
    The map command displays a view of how the IRC network is connect. This command does not work on all servers (See also /links)

  • /mode (1) - Syntax: /mode {nick} [+|-]{mode(s)}
    The mode command is most often reserved for sysops. This mode command (1) allows the sysop to set various modes or properties for your nick. Some of these include:

    • g - receive HACK wallops. Basically allows the user to receive desync messages
    • i - invisibility. The nick won't show up with the /who command, or on /whois with wildcards, but you can be "seen" by users in the same channel as you.
    • s - receive server notices
    • w - receive wallops. Allows the user to receive IRCop messages
    • d - deaf mode. You won't hear (though I suppose "see" is more appropriate) any of the public messages in a channel, though you will receive private messages. This is currently only used in Ircu.
    • x - hides your hostname in the /whois command results

  • /mode (2) - Syntax: /mode +s [+|-]{mask_number}
    The mode command can also be used to set server notice masks. Like the command above, these are most often reserved for sysops only, however this mode command is used for changing global settings. Each mask number is a power of 2, you can add the mask numbers together to set multiple options at once. For example, if you wanted to set mask 4 and mask 8, you could simply set mask 12, and be sure that there are no other combinations that could add up to 12. Some of the mask numbers include:

  • /mode (3) - Syntax: /mode {mode} {parameter}
    The mode command can also allow you to set modes for a channel. Some of these modes include:

    • b {nick} {reason} - ban someone from a channel
    • i - sets the channel as invite-only
    • k {password} - sets a password (key) for entering the channel
    • l {limit} - sets a limit on the number of users that can be in the channel at one time
    • m - channel is moderated - only ops and voiced people can talk
    • n - no messages may be sent to this channel from outside
    • o {nick} - set user as a channelop
    • p - channel is private
    • r - sets an account limited channel
    • s - channel is secret
    • v {nick} - Voice someone in a channel, allows them to speak through bans and moderations

  • /motd - Syntax: /motd
    The motd (message of the day) command displays a message from the server. This could be an announcement, notice, or just random quotes.

  • /names - Syntax: /names {channel_name}
    The names command displays all the nicks in a given channel.

  • /notice - Syntax: /notice {notice_receiver} {notice_text}
    The notice command allows you to send a quick private message without opening a private message window. Notices should never be responded to with an automatic reply (from a irc bot, for example).

  • /partall - Syntax: /partall
    The partall command causes you to leave all channels (See also /part and /quit)

  • /ping - Syntax: /ping {nick} OR /ping {channel_name}
    The ping command allows you to ping a user or channel.

  • /privmsg - Syntax: /privmsg {nick_of_receiver} {message_text}
    The privmsg command allows you to send a private message to a specified user. This command is not supported on all IRC servers, and it is more common (and safe) to use the /msg command instead.

  • /query - Syntax: /query {nick}
    The query command allows you to continually send private messages to the specified nick without having to keep entering /msg {nick} each time, but it also keeps the main public conversation displayed on the page. With the introduction of GUIs for IRC that can open a separate private message window, this command is not as useful as it used to be. To turn of query, simply type /query again with no nick specified (See also /msg)

  • /raw - Syntax: /raw {options}
    The raw command allows you to send raw commands to the server. There are literally tens of thousands of raw commands and options, so an explanation of this command is beyond the scope of this writeup.

  • /silence - Syntax: /silence [+|-]{nick}
    The silence command is very similar to the /ignore command except that it works from the server end to block messages by disliked users. Not all servers support this command.

  • /stats - Syntax: /stats
    The stats command displays various statistical information including ports, lists of banned users, away users count, etc. Stats is disabled on most servers for security.

  • /time - Syntax: /time
    The time command displays the current date and time on the IRC server.

  • /topic - Syntax: /topic OR /topic {topic_text}
    The topic command gets or sets the topic of the channel

  • /trace - Syntax: /trace {nick}
    The trace command displays the path between you and a specified user (i.e., what path your message travels along the network when you /msg them).

  • /userhost - Syntax: /userhost {nick}
    The userhost command displays the hostname of the specified user (See also /whois)

  • /userip - Syntax: /userip {nick}
    The userip command displays the IP address of the specified user (See also /whois)

  • /version - Syntax: /version
    The version command displays the software version of the software running the IRC server (often IRCU). See also /info.

  • /whowas - Syntax: /whowas {nick}
    The whowas command is very similar to /whois, however if a user has disconnected from the server, whowas information is stored in a buffer for a period of time.

See Also...

When IRC Goes Wrong: A Dick Wash Case Study

IRC is used somewhat widely in the standard college student community. Some classes even have IRC-hosted channels which yield benefits and risks for the professor(s) and students participating. At one end, a chatroom can provide a place for students to focus their ideas in a casual discussion, making the pressure of responding or asking for comments a lot less. At the other, extraneous concepts can quickly derail the entire thread and even bring the distraction into "RL," or Real Life for those of you who haven't used the Internet since Webcrawler.

Our Social Computing class hosts our own channel on SlashNET which is used in our labs to supplement discussion. The first class is the lecture, where we bandy about ideas and thoughts regarding aspects of social media. We discuss Groupware, MUDs, tagging, OpenSource, and many more. Our focus is breaking down papers dwelling on these subjects, papers that can sometimes get incredibly dreary or mind-numbing. Occasionally we'll have a speaker come in and discuss either what he does or what he's researched.

Thirty minutes afterward, the first section (which I belong to) has its lab. In the lab we create blogs, present our cool sites of the week, are assigned a write-up to E2 and so on. We all log on to our IRC channel and either talk about topics related to class or (more commonly) discuss the latest tech news or internet meme. Since the teaching assistant is also logged in as an admin, we have to be careful of what we post. For instance, I was once banned from the channel because I posted too many Omegle chats where I spam-trolled the unfortunate victim on the other end.

Today provided an odd insight into how IRC can sometimes distract users to the point where they burst out laughing in the real world and consequently disrupt the entire lab session. I'm talking about me (if you already hadn't guessed) and my unfortunate discovery of an alternate name for one of the speakers we had in our class the same day.

In class today we learned about tagging (tagging on Flickr,, etc). We learned what people most commonly tag and where tags most commonly occur. Our speaker for the day was a Richard Wash, a PhD candidate researching at the School of Information for the University of Michigan. He talked about social tagging and how it affects social media. Since I had a bit of an abdominal problem, I couldn't really contribute to the last half of the discussion; nevertheless, I got to meet Mr. Wash and discuss a little of social media before my intestines growled menacingly at me.

As we sat down (I sat down gingerly (and yes, I know you wanted to know that)) to lab, my thoughts drifted as they often do. I began thinking about our presenter, Rick Wash, at the same time one of the students took her turn to present her Cool Site of the Week.

"Rick Wash," I thought. "Rick Wash." And then it hit me, the fated turn of thought that would end up disrupting the classroom.

Dick Wash.


His name was Dick Wash. The hilarity of this was momentarily dulled as I absently posted to my IRC channel how unfortunate a name this man had. I was starting to type about his poor childhood when "Dick Wash" was processed by every student there. A few people giggled and I couldn't hold myself back any longer. I burst out laughing and then managed to contain myself. Well, for a few seconds anyway.

After my third guffaw, the affronted student asked if I was laughing at her (to which I hastily responded that I wasn't laughing at HER so much as my screen). This was rude any way someone put it, but then my gut had to spew out another laugh. I had now successfully completely derailed the class.

If IRC wasn't in evidence, would that stray thought have passed back through the recesses of my mind without eliciting laughter? Maybe. It'd have much more of an impact for me to continually read the words "Dick Wash" over and over to the point that my laughter could no longer be contained.

IRC is a risk. You have to be careful how you use it in class or how carefully it's moderated, or terrible accidents such as this might occur.

Log in or register to write something here or to contact authors.