diff --git a/FTPClient/.vs/FTPClient/DesignTimeBuild/.dtbcache.v2 b/FTPClient/.vs/FTPClient/DesignTimeBuild/.dtbcache.v2
index 5d78f33560a055d35dbc3ccefd1f3d18e93041f8..9d4cb26e7e50c700c45dc7c8bb2f1529f2ba362b 100644
Binary files a/FTPClient/.vs/FTPClient/DesignTimeBuild/.dtbcache.v2 and b/FTPClient/.vs/FTPClient/DesignTimeBuild/.dtbcache.v2 differ
diff --git a/FTPClient/.vs/FTPClient/v16/.suo b/FTPClient/.vs/FTPClient/v16/.suo
index 62522d26681b72cb884408d9d9a690f98f386505..8a0fb72f03c4a259b7a541eb4332d5b401eac2e8 100644
Binary files a/FTPClient/.vs/FTPClient/v16/.suo and b/FTPClient/.vs/FTPClient/v16/.suo differ
diff --git a/FTPClient/FTPClient/Client.cs b/FTPClient/FTPClient/Client.cs
index ff3a53d915ef757ef9dcff1d4d26d1095803d532..f45808002cba3dbe0138ab1b92548532c7181975 100644
--- a/FTPClient/FTPClient/Client.cs
+++ b/FTPClient/FTPClient/Client.cs
@@ -12,6 +12,18 @@ namespace FTPClient
         private static int port = 21;
         
         static void Main(string[] args)
+        {
+            FtpConversation();
+            TftpConversation();
+            Console.ReadKey();
+        }
+
+        private static void TftpConversation()
+        {
+            TftpClient client = new TftpClient("test", 69);
+        }
+
+        private static void FtpConversation()
         {
             FtpClient client = new FtpClient(username, password, host, port);
             client.Initialize();
@@ -22,7 +34,7 @@ namespace FTPClient
             client.Pasv();
             client.Retr();
             client.Quit();
-            Console.ReadKey();
+
         }
     }
 }
diff --git a/FTPClient/FTPClient/FtpClient.cs b/FTPClient/FTPClient/FtpClient.cs
index c062cc95ae099f9658678c5a0f7ef1d6c10056f6..99bbe0372b251a91e73e9bf0d51bcc8b8787ca5d 100644
--- a/FTPClient/FTPClient/FtpClient.cs
+++ b/FTPClient/FTPClient/FtpClient.cs
@@ -270,9 +270,8 @@ namespace FTPClient
             sw.Flush();
 
             handleResponse(sr.ReadLine());
-            byte[] descriptor = new byte[3];
-            byte[] buffer = new byte[1024];
-            string file = string.Empty;
+            byte[] buffer = new byte[2048];
+            string last = string.Empty;
 
             // TODO: Change default to break
             // and cases just for statuses that need actions.
@@ -284,13 +283,18 @@ namespace FTPClient
                 case "150":
                     while (true)
                     {
-                        ftpSocket.Receive(descriptor);
                         ftpSocket.Receive(buffer);
                         string response = Encoding.UTF8.GetString(buffer);
-                        file += ftpSr.ReadLine();
+                        if(response.Equals(last)) 
+                        {
+                            handleResponse(sr.ReadLine());
+                            CloseData();
+                            return; 
+                        }
                         if (response != null)
                         {
                             sw.WriteLine(response);
+                            last = response;
                         }
                         else { break; }
                     }
@@ -310,6 +314,12 @@ namespace FTPClient
         }
 
         private void TearDown()
+        {
+            CloseFtp();
+            CloseData();
+        }
+
+        private void CloseFtp()
         {
             sw.Close();
             sr.Close();
@@ -317,6 +327,14 @@ namespace FTPClient
             socket.Close();
         }
 
+        private void CloseData() 
+        {
+            ftpSw.Close();
+            ftpSr.Close();
+            ftpNs.Close();
+            ftpSocket.Close();
+        }
+
         public void GetDirectory()
         {
             try
@@ -338,10 +356,4 @@ namespace FTPClient
         }
 
     }
-}
-
-public class Buffer
-{
-    public static byte descriptor;
-    public static Int16 size;
 }
\ No newline at end of file
diff --git a/FTPClient/FTPClient/TftpClient.cs b/FTPClient/FTPClient/TftpClient.cs
new file mode 100644
index 0000000000000000000000000000000000000000..aecdceb9ae3bd6e5ccff1016656c9edfdef3a7a8
--- /dev/null
+++ b/FTPClient/FTPClient/TftpClient.cs
@@ -0,0 +1,89 @@
+using System;
+using System.IO;
+using System.Net;
+using System.Net.Sockets;
+
+namespace FTPClient
+{
+    class TftpClient
+    {
+        public static Socket socket;
+        public static IPEndPoint ipEndp;
+        public static NetworkStream ns;
+        public static StreamReader sr;
+        public static StreamWriter sw;
+        public static string status;
+
+        public string host { get; set; }
+        public int port { get; set; }
+
+        public TftpClient(string host, int port)
+        {
+            this.host = host;
+            this.port = port;
+        }
+
+        // Initialize socket and connect to server
+        public void Initialize()
+        {
+            socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
+            IPAddress[] ips = Dns.GetHostAddresses(host);
+            IPAddress address;
+            try
+            {
+                address = ips[1];
+            }
+            catch (IndexOutOfRangeException)
+            {
+                address = ips[0];
+            }
+
+            ipEndp = new IPEndPoint(address, port);
+
+            try
+            {
+                socket.Connect(ipEndp);
+            }
+            catch (Exception e)
+            {
+                Console.Write(e);
+                Console.ReadKey();
+            }
+
+            ns = new NetworkStream(socket);
+            sr = new StreamReader(ns);
+            sw = new StreamWriter(ns);
+            string response = sr.ReadLine();
+            handleResponse(response);
+        }
+
+        /// <summary>
+        /// Handles normal response from server, if response has dash after status then
+        /// ask for new line. Since it indicates multiline response.
+        /// </summary>
+        /// <param name="response">Response from server</param>
+        private void handleResponse(string response)
+        {
+            status = response.Substring(0, 3);
+            bool loop = true;
+            string resp = String.Empty;
+            Console.WriteLine(response);
+            if (response[3] == '-')
+            {
+                while (loop)
+                {
+                    resp = sr.ReadLine();
+                    if (resp[3] == '-')
+                    {
+                        Console.WriteLine(resp);
+                    }
+                    else
+                    {
+                        Console.WriteLine(resp);
+                        loop = false;
+                    }
+                }
+            }
+        }
+    }
+}
diff --git a/FTPClient/FTPClient/bin/Debug/netcoreapp3.1/FTPClient.dll b/FTPClient/FTPClient/bin/Debug/netcoreapp3.1/FTPClient.dll
index 20463764da23e59de95fd5ffb4f28578f01738cb..207ea66413f61d3da31eb16c3318142d1ee063bd 100644
Binary files a/FTPClient/FTPClient/bin/Debug/netcoreapp3.1/FTPClient.dll and b/FTPClient/FTPClient/bin/Debug/netcoreapp3.1/FTPClient.dll differ
diff --git a/FTPClient/FTPClient/bin/Debug/netcoreapp3.1/FTPClient.pdb b/FTPClient/FTPClient/bin/Debug/netcoreapp3.1/FTPClient.pdb
index d4b00074b3a9889897fb21b953af6775fd56fbd2..713a1b413a4e199e5ef5cf3fffef61666486f439 100644
Binary files a/FTPClient/FTPClient/bin/Debug/netcoreapp3.1/FTPClient.pdb and b/FTPClient/FTPClient/bin/Debug/netcoreapp3.1/FTPClient.pdb differ
diff --git a/FTPClient/FTPClient/obj/Debug/netcoreapp3.1/FTPClient.csproj.CoreCompileInputs.cache b/FTPClient/FTPClient/obj/Debug/netcoreapp3.1/FTPClient.csproj.CoreCompileInputs.cache
index e37df9fc6cb7b4ec11439eea154a5bbb0317f0eb..beba78a65316a69fca6c89632efa73c827020467 100644
--- a/FTPClient/FTPClient/obj/Debug/netcoreapp3.1/FTPClient.csproj.CoreCompileInputs.cache
+++ b/FTPClient/FTPClient/obj/Debug/netcoreapp3.1/FTPClient.csproj.CoreCompileInputs.cache
@@ -1 +1 @@
-a4e69bfc552dac666e14bfb187fa62f229299f16
+c60aa8053be36ecf6792d8db05a562b0df068660
diff --git a/FTPClient/FTPClient/obj/Debug/netcoreapp3.1/FTPClient.dll b/FTPClient/FTPClient/obj/Debug/netcoreapp3.1/FTPClient.dll
index 20463764da23e59de95fd5ffb4f28578f01738cb..207ea66413f61d3da31eb16c3318142d1ee063bd 100644
Binary files a/FTPClient/FTPClient/obj/Debug/netcoreapp3.1/FTPClient.dll and b/FTPClient/FTPClient/obj/Debug/netcoreapp3.1/FTPClient.dll differ
diff --git a/FTPClient/FTPClient/obj/Debug/netcoreapp3.1/FTPClient.pdb b/FTPClient/FTPClient/obj/Debug/netcoreapp3.1/FTPClient.pdb
index d4b00074b3a9889897fb21b953af6775fd56fbd2..713a1b413a4e199e5ef5cf3fffef61666486f439 100644
Binary files a/FTPClient/FTPClient/obj/Debug/netcoreapp3.1/FTPClient.pdb and b/FTPClient/FTPClient/obj/Debug/netcoreapp3.1/FTPClient.pdb differ
diff --git a/data.txt b/data.txt
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..990e99e1a84265cc7849daa68ff5080b15d3d0a2 100644
--- a/data.txt
+++ b/data.txt
@@ -0,0 +1,476 @@
+#
+# Introduction to nic.funet.fi archive
+#
+# Status: Update in progress
+# Author: staff of ftp.funet.fi  
+# Created: Sat Aug 22 20:31:58 1992
+# Last modified: 2019-06-18
+#
+
+
+
+	Welcome to FTP.FUNET.FI aka NIC.FUNET.FI aka BIO.NIC.FUNET.FI
+
+It runs on two Linux servers with dual 20 core processors, 
+786GB of memory and 2 x 25Gbit/s network connections.
+80+TB storage is provided from NetApp NFS NAS servers.
+
+
+This system is owned by the finnish ministry of education
+and operated on their behalf by CSC primarily for the Finnish Academic
+and Research Network FUNET users and the Elixir Community. 
+It is located in the town of Espoo in Finland.
+
+Paper mail address:
+          NIC.FUNET.FI coordinator
+          Harri Salminen
+	  CSC
+          POBOX 405 (street address is Keilaranta 14)
+          FIN-02101 Espoo
+	  FINLAND
+
+https://www.nic.funet.fi/contact
+
+    This server group has many names.  Its "staff" will always be
+at `nic.funet.fi', but othervice consider using philosophy: `name by
+function', thus FTP from  ftp.funet.fi.
+
+ftp.funet.fi         traditional anonymous ftp service (also with http and IPv6 support)
+www.nic.funet.fi     http access to our collections (shows index.html's if any)
+nic.funet.fi	     email and other administrative tasks (in practice ftp
+		     is also supported)
+rsync.nic.funet.fi   rsync protocol for bulk downloads
+bio.nic.funet.fi     bioinformatics data and software 
+
+
+We have also several other names and may move some services to other
+computers as we see necessary. 
+
+	CONTENTS:
+
+    - Intro
+    - What is considered proper conduct of anonymous FTP usage
+    - Privacy issues
+    - Contacts about material in here
+	( GIFs and others )
+    - Uploading
+    - CD-ROMs
+    - FTPD sources
+    - Reporting a bug/problems
+    - Physical disk structure is hidden behind logical one
+    - Restrictions
+    - Minimum of maximum retrieval rate
+    - IP-reversal and valid "passwd" requirements
+    - What is `Freely distributable' ?
+    - Other 
+services available from here
+    - Many names of the server
+
+
+	INTRO:
+
+    This system has plenty of freely distributable material on its FTPable
+areas.   We have also other services, see at the end of this document for
+pointers.
+
+    If you have any questions regarding MATERIALS in this archive, read
+first `Contacts about material in here' below.  If you can't locate correct
+person/mail alias with it, try `problems@nic.funet.fi', but do not do that
+as your only attempt!
+
+
+	WHAT IS CONSIDERED A PROPER CONDUCT OF ANONYMOUS FTP USAGE:
+
+    Like many systems world wide, ours offers  anonymous  logins for
+FTP users.  Such a service means:
+	- You do not need to apply an account at this server, just use
+	  well known userid:   anonymous  (or ftp)  and for a password please 
+          do enter your email address (in format:  your_userid@your_site)
+          according to the convention used since the 1970s in public FTP servers.
+
+	- While this service is called "anonymous" due to that well-known
+	  userid, it is considered good manners to identify yourself
+	  properly.  (No, this is not truly anonymous.)
+	(See PRIVACY ISSUES)
+
+For those who have this privilege of using ftp, here are some do's
+and don'ts:
+
+      - When you are transferring large amounts over long distance
+	links, do limit yourself to off hours.  When working between
+	the USA and Finland, try it after 4 PM OUR time ( 10 AM
+	Eastern USA time.)  And remember that we wake up 10 hours
+	before California.  We are at time zone `UTC +2h' and in
+	summer 'UTC +3h'
+
+      - Major portion material in this archive originates from various
+	locations all over the world. We try to indicate origins 
+        if we know them. Do try to use server nearest (network wise) to
+        yourself.
+
+      - When you log in anonymous, system immediately identifies you, and
+	if you are not limited by number of users, you are
+	prompted with:
+
+	331 Any password will work
+
+	Alternatively, read the man-page of ftp-program (assuming you

+
+	are using UNIX ftp client), and see what is said about ".netrc" 
+        or other ways of setting presets.
+
+      - See below more about what is `Freely Distributable'.
+	After all, it is not always the same as Public Domain!
+
+      - Don't do many parallel downloads, it will slow down the
+	service for others and eventually even you. There's a maximum limit
+        on simultaneous connections for FTP which is shown when you log in. 
+        For HTTP we have had to limit the maximum connections from one
+        IP to 10. 
+
+
+      - REMEMBER: USING ANONYMOUS FTP IS A PRIVILEGE.  DON'T ABUSE IT!
+
+
+
+	PRIVACY ISSUES
+
+    All file accesses, logins etc. are logged with time, userid (if
+available), URL, IP-address, client type and version, referer, size of transfer, sessionid
+etc. and the logs are kept for an indefinite period of time to satisfy statistical,
+security and legislative requirements.  We don't transfer log
+information outside EU or give them to third parties for advertising.
+
+There may however be some, possibly mirrored, HTML files or links that
+point to external content like HTML, images or javascript from third
+party servers beyond our control which may have their own logging
+policies.  These pages may or may not have their own privacy
+documentation links.  Please check the HTML page source code or use
+suitable tools to check any external content in case you are
+concerned. Or you can always use good old FTP for browsing and
+downloading the files you want without worrying what external things
+some web pages may contain. FTP is logged only locally.
+
+ The plain directory listings are generated by apache directory
+module which may display header or footer HTML files if they exist in the
+directory. E.g. some linux distributions use them to provide additional information.
+
+If you want to be totally unknown, you must not use FTP, WWW, Rsync or
+other internet services as it can never be used without revealing at least the
+IP address of the host or firewall your connection
+ is coming from.  Even if you
+had a firewall or proxy somewhere in between, they often keep track
+who's using them.  
+
+The public FTP use is anonymous, which means that you can give any
+userid you wish and if it's unknown locally, you will be logged in to
+the public FTP repository and we'll log just your IP under userid ftp
+along with the information of the transferred files like
+name, datetime, sessionid, duration and size of the transfer.  It's
+however customary to use as usernames either ftp or
+anonymous. Password can be anything. Years ago it was recommended to
+be email for possible contact purposes but it's no longer logged so we
+can't contact you back with email unless you contact us first. For more information on FTP server and it's log formats please read
+
+https://download.pureftpd.org/pub/pure-ftpd/doc/README
+
+Use of public web services doesn't normally require login or userid but
+we collect the usual web logs that apache produces, 
+information on what might be collected is in it's documentation
+
+http://httpd.apache.org/docs/current/mod/mod_log_config.html
+
+Use of public rsync is provided without logins. Rsync server logs
+IP-address, domain name, datetime, requests, transferred filenames, bytes, 
+possible errors, session id etc. 
+
+For more information please read the source code available at 
+
+http://www.nic.funet.fi/pub/mirrors/samba.org/pub/rsync/
+
+For administrative and other restricted services like ssh and gridftp we usually 
+require logins that we do log along with personally identifiable userid or
+certificate information and handle according to our privacy policies.
+
+For more information on privacy related information can be found at
+https://www.csc.fi/privacy. It includes information on 
+CSC's Customer Register Privacy Policy and contact information for
+privacy related issues.
+
+For statistics we use the domain part of your hostname, not the
+hostname itself which in practice means organization and country level
+statistics which we need to maintain the servi
+ce and it's
+funding. Please try to keep your reverse DNS working, especially if
+you are under .fi domain since we will try to give preference to
+finnish users in case we will someday again have to impose domain
+based speed restrictions on the service like in the early days of the
+Internet.
+
+We may also use log information to analyze and prevent possible
+missuse of our resources. We may for example limit the usage from
+certain IP addresses or domains if they cause unnecessary load or
+other issues for the service.  Also access to certain files,
+directories, web-pages and applications may be limited and monitored.
+In case of possible abuse we may also try to use the IP address
+registries to contact your network administration via the Funet CERT.
+
+
+
+	CONTACTS ABOUT MATERIAL IN HERE:
+
+Most of the active content is originated from some other site, please
+contact them, not us for questions or contributions.  E.g. if pwd says
+that in the path is a directory /mirrors/ then it's clearly not
+originating from us.  Name of the mirror origin can usually be deduced
+from the directory name under /pub/mirrors/
+
+If you can't figure out the origin of the content, then
+please use the contact form at https://www.nic.funet.fi/contact to
+contact the NIC.FUNET.FI coordinator or use the traditional 
+contact information in the beginning of this file.
+
+
+
+	UPLOADING:
+
+If you want to upload or contribute some files for
+publication, please contact the NIC.FUNET.FI coordinator for
+more information. Be prepared to proof your identity, the origin
+of the content and permissions required for distributing the content.
+
+If an area is no longer actively maintained, we don't normally accept
+new contributions unless there's a good reason and clear documentation.
+Those areas are mainly preserved for their possible historical value.
+
+If you still can't figure out what to do you can contact the NIC.FUNET.FI coordinator
+with all relevant informations concerning your case.
+
+
+
+
+	CD-ROMs
+
+    Every now and
+ then we are asked for a CD-ROM of this archive; so far
+there are none available with the exception of the Euroscene 1 collection
+based on part of the Amiga area. We don't expect many exceptions...
+
+    Reasons for this are multiple, not the least of them being our
+unwillingess to do the effort of publishing such a set.  Arranging the
+publishing on this kind of directly government funded system is not so
+easy in legal wise when it comes to direct money making as of selling
+those CD-ROMs... Also it doesn't too well fit to our main business
+idea of providing all the WAN network services the Academic and
+Research community needs. The whole archive on CD-ROM would take 
+thousands of CD-ROMs and require lots of manpower to figure out what
+should or shouldn't be on each cd-rom and how to finance it. We are a
+network service provider, not a cd-rom store.
+
+Some software collections are available commercially, with technical
+support, on CD-ROM from other sources (e.g. most Linux distributions). That
+may even be a major revenue source for maintaining those collections
+so they might not even allow cd-rom versions by others. Some other
+collections however are specifically available as CD-ROM images (.iso)
+that you can burn yourself and even distribute according to their
+copyright statements. So please read the fine print before
+redistributing collections available from us. 
+
+	FTPD SOURCES:
+
+
+For a simple to maintain ftp server, you might want to
+look at www.pureftpd.org, we have used it successfully in several
+different places.  Another Very Secure choice might be vsftpd
+available from http://vsftpd.beasts.org that is being used by many large
+sites.
+
+
+
+
+	REPORTING A BUG:
+
+    If you observe odd behaviour of this server, which is not of what you
+believe to be correct, please contact   problems@ftp.funet.fi  and in the
+report have attached a session log which shows the wrong functionality.
+However, check at first what we state about "Restrictions" below!
+
+Such log should start from y
+our FTP session startup, and it should contain:
+
+	- Descriptions about your (computing-) environment relevant
+	  with attempted FTP access;
+		- Maker and model of the computer where you ran your
+		  FTP session,
+		- TCP/IP software model and maker (quite many system do
+		  not come with builtin TCP/IP -- VMS-machines are one
+		  such example.)
+	- UNEDITED (verbose, unabridged) session transcript showing
+	  EVERYTHING you sent to this system, and what were the responses.
+
+Note: Reports about corrupted files belong to archive area keepers; they
+      handle those files;  "problems"  handles the server subsystem.
+
+
+    Bugs/problems relating to ARCHIVED MATERIAL:
+	Select by list under: `Contacts about material in here'
+
+    Bugs/problems relating to other parts of system software:
+	Problems group:  <problems@ftp.funet.fi>
+	("system software" does not mean anything under /pub/")
+
+	If you can get /README without trouble, don't contact <problems>,
+	but one of earlier mentioned area administration aliases.
+
+
+
+	WHAT IS `FREELY DISTRIBUTABLE' ?
+
+	Freely distributable does not mean the same thing as PD
+(public domain).  A big portion of the software available here is not
+in the public domain, although it is freely distributable.  Many are
+copyrighted by some person or organization, but can be distributed
+freely; there may be limitations on the manner of distribution and/or
+the usage of the programs.  There may also be certain rules concerning
+the distribution of modified versions (derivate work) of the programs,
+like saying that if you redistribute a modified version you must
+include in the distribution the date and author of the modification.
+Also on many programs you must include a note crediting the original
+author of the program if you use his code in your own programs.
+
+	An example of this is the Free Software Foundation's GNU
+software.  GNU software may be distributed freely, provided that the
+sources are included, an offer to distribute the sources is included
+or that a 
+pointer to where the sources can be gotten from is included.
+On  FTP.FUNET.FI,  all the GNU source code published is available from
+the directory  pub/gnu.   Some GNU binaries are available from other
+directories as well; although we have tried to include a poiy system do
+		  not come with builtin TCP/IP -- VMS-machines are one
+		  such example.)
+	- UNEDITED (verbose, unabridged) session transcript showing
+	  EVERYTHING you sent to this system, and what were the responses.
+
+Note: Reports about corrupted files belong to archive area keepers; they
+      handle those files;  "problems"  handles the server subsystem.
+
+
+    Bugs/problems relating to ARCHIVED MATERIAL:
+	Select by list under: `Contacts about material in here'
+
+    Bugs/problems relating to other parts of system software:
+	Problems group:  <problems@ftp.funet.fi>
+	("system software" does not mean anything under /pub/")
+
+	If you can get /README without trouble, don't contact <problems>,
+	but one of earlier mentioned area administration aliases.
+
+
+
+	WHAT IS `FREELY DISTRIBUTABLE' ?
+
+	Freely distributable does not mean the same thing as PD
+(public domain).  A big portion of the software available here is not
+in the public domain, although it is freely distributable.  Many are
+copyrighted by some person or organization, but can be distributed
+freely; there may be limitations on the manner of distribution and/or
+the usage of the programs.  There may also be certain rules concerning
+the distribution of modified versions (derivate work) of the programs,
+like saying that if you redistribute a modified version you must
+include in the distribution the date and author of the modification.
+Also on many programs you must include a note crediting the original
+author of the program if you use his code in your own programs.
+
+	An example of this is the Free Software Foundation's GNU
+software.  GNU software may be distributed freely, provided that the
+sources are included, an offer to distribute the sources is included
+or that a 
+nter to
+the sources and the copyright information in these other directories,
+too, it might be that we have neglected some.  This note is here to
+point you to the sources in  pub/gnu.   For further information, the
+GNU copyright is in the file  pub/gnu/COPYING.
+
+Take also in account the provisions of the european GDPR directives
+and document appropriately. If the material contains information that
+could be used to identify persons please make sure that the
+information is freely distributable. Also if you have many such
+entries, you may need to declare it as a registry of persons and make
+sure that the persons in question don't object in being such a
+registry (e.g. list of contacts, authors or references in documents or
+mailing list archives etc. also may constitute a registry and not just
+a formal database.
+
+
+
+
+We have multiple filesystems that are all mounted via mountpoints under
+the /.m/ directory. We may move mirrors and other directories from
+one filesystem to another without notice, so please refer to our directories
+with the official /pub/ or /index/ path instead of the physical /.m they
+map to and might be shown to you by various user agents. Especially all
+/.m/mirror*/ filesystems are all symlinked via the /pub/mirrors/ directory
+and the subdirectories try to match those on the original site.
+
+
+
+
+A very concise history of NIC
+=============================
+
+1988 First of December Finland gets it's first internet link of 56Kbit/s via the NORDUnet co-operation and major part of the traffic was from FTP
+1989 Funet saw the need for a FTP-server that would allow better access to the internet content (web was still a dream)
+     from Finland. Decision to set up NIC.FUNET.FI was made and Request for Proposals sent out
+1990 First NIC.FUNET.FI, a SUN 4/330, with dual 40Mhz SPARC processors, 128MB RAM and 6GB of usable
+     disk space which made it then among the largest FTP servers in the Internet. 
+     Our international internet connectivity for whole Funet was 64Kbit/s so
+ mea develops an ftpd with speed limits
+     More hardware details are available in /pub/files/Historical/staff-docs/historical/First-NIC-Hardware.txt
+1991 Linus Torvalds offered a small OS for public distribution which our volunteer 
+     Ari Lemmke decided to call Linux and the name stuck... International connection was upgraded to 128Kbit/s
+1992 We had about 20GB of external disks and a motherboard upgrade making it in practice a SUN 630-41 MP
+     International connectivity was upgraded to 1Mbit/s
+1994 Second NIC with 275Mhz Alpha processor, 320MB of memory and 100GB+ disk space (DEC AXP3000-900)
+     International connection for Funet upgraded to 2 x 2Mbit/s
+1999 Third NIC with four processors and 4GB of memory (a SUN 450) was taken in use. 
+     Under 1TB made from well over hunred old and new disks in two RAID racks (DEC and Eurologic)
+     International connections used 155Mbit/s links with redundancy
+2003 A user survey to determine whether users still need NIC is made with an encouraging response
+2006 The fourth version of NIC from Fujitsu-Siemens Computers with 16GB of memory and four processors
+     is taken into production initially with 3TB+ EMC CX300 SAN storage array. A SUN V240 is in a support role.
+     2.5Gbit/s and 10Gbit/s international links
+2007 5-6 TB SAN storage added. Dark fibers with support for many lightpaths deployed in the Funet backbone.
+2010 Fifth version of NIC, a Dell R710, with dual Quad-Core Nehalem EP (2,53Ghz Intel Xeon 5540) processors, 
+     72GB of RAM and storage from the CSC storage area network (initially 10TB+ from a EMC CX700) 
+     taken into use under Solaris 10 and the ZFS filesystem. Network connection is now 
+     10Gbit/s to the Funet backbone and multiples of 10Gbit/s to the rest of the Internet.
+2012 bio.nic.funet.fi R710 servers and NetApp storage added to the NIC.FUNET.FI to primarily serve Elixir bioinformatics community
+2019 Sixth version of (bio)NIC, two Dell R640 servers with 2 x 20 core processors and 786GB of memory each. 80+TB of 
+NetApp NFS storage.
+
+More historical pieces of information can be found in various files around NIC and especially a more
+generic Internet-history in a concise web format at http://www.nic.funet.fi/index/FUNET/history/internet/
+
+There's also a more verbose article of NIC now and then at the CSCnews 3/06 available at
+https://web.archive.org/web/20070107152338/http://www.csc.fi/csc/julkaisut/CSCnews/Edelliset_numerot/CSCnews3_2006
+
+
+
+30-41 MP
+     International connectivity was upgraded to 1Mbit/s
+1994 Second NIC with 275Mhz Alpha processor, 320MB of memory and 100GB+ disk space (DEC AXP3000-900)
+     International connection for Funet upgraded to 2 x 2Mbit/s
+1999 Third NIC with four processors and 4GB of memory (a SUN 450) was taken in use. 
+     Under 1TB made from well over hunred old and new disks in two RAID racks (DEC and Eurologic)
+     International connections used 155Mbit/s links with redundancy
+2003 A user survey to determine whether users still need NIC is made with an encouraging response
+2006 The fourth version of NIC from Fujitsu-Siemens Computers with 16GB of memory and four processors
+     is taken into production initially with 3TB+ EMC CX300 SAN storage array. A SUN V240 is in a support role.
+     2.5Gbit/s and 10Gbit/s international links
+2007 5-6 TB SAN storage added. Dark fibers with support for many lightpaths deployed in the Funet backbone.
+2010 Fifth version of NIC, a Dell R710, with dual Quad-Core Nehalem EP (2,53Ghz Intel Xeon 5540) processors, 
+     72GB of RAM and storage from the CSC storage area network (initially 10TB+ from a EMC CX700) 
+     taken into use under Solaris 10 and the ZFS filesystem. Network connection is now 
+     10Gbit/s to the Funet backbone and multiples of 10Gbit/s to the rest of the Internet.
+2012 bio.nic.funet.fi R710 servers and NetApp storage added to the NIC.FUNET.FI to primarily serve Elixir bioinformatics community
+2019 Sixth version of (bio)NIC, two Dell R640 servers with 2 x 20 core processors and 786GB of memory each. 80+TB of