diff --git a/text_based.py b/text_based.py
index 816395e..02949c9 100755
--- a/text_based.py
+++ b/text_based.py
@@ -1,4 +1,5 @@
 #!/usr/bin/python
+# -*- coding: utf-8 -*-
 
 import sqlalchemy
 import re
@@ -13,6 +14,7 @@ exit_commands = ['exit', 'abort', 'quit', 'bye', 'eat flaming death']
 help_commands = ['help', '?']
 context_commands = ['what', '??']
 local_help_commands = ['help!', '???']
+faq_commands = ['faq']
 restart_commands = ['restart']
 
 class ExitMenu(Exception):
@@ -135,6 +137,9 @@ class Menu():
 			if result in context_commands:
 				self.show_context()
 				continue
+			if result in faq_commands:
+				FAQMenu().execute()
+				continue
 			if result in restart_commands:
 				if self.confirm('Restart Dibbler?'):
 					restart()
@@ -304,6 +309,7 @@ The following commands are recognized (almost) everywhere:
  help, ?          -- display this help
  what, ??         -- redisplay the current context
  help!, ???       -- display context-specific help (if any)
+ faq              -- display frequently asked questions (with answers)
  exit, quit, etc. -- exit from the current menu
 
 When prompted for a user, you can type (parts of) the user name or
@@ -400,6 +406,78 @@ class ConfirmMenu(Menu):
 			print 'Please answer yes or no'
 
 
+class MessageMenu(Menu):
+	def __init__(self, name, message, pause_after_message=True):
+		Menu.__init__(self, name)
+		self.message = message.strip()
+		self.pause_after_message = pause_after_message
+
+	def _execute(self):
+		self.print_header()
+		print
+		print self.message
+		if self.pause_after_message:
+			self.pause()
+
+
+class FAQMenu(Menu):
+	def __init__(self):
+		Menu.__init__(self, 'Frequently Asked Questions')
+		self.items = [MessageMenu('What is the meaning with this program?',
+					  '''
+We want to avoid keeping lots of cash in PVVVV\'s money box and to
+make it easy to pay for stuff without using money.  (Without using
+money each time, that is.  You do of course have to pay for the things
+you buy eventually).
+
+Dibbler stores a "credit" amount for each user.  When you register a
+purchase in Dibbler, this amount is decreased.  To increase your
+credit, add money to the money box and use "Adjust credit" to tell
+Dibbler about it.
+'''),
+			      MessageMenu('Can I still pay for stuff using cash?',
+					  'Yes.  You can safely ignore this program completely.'),
+			      MessageMenu('How do I exit from a submenu/dialog/thing?',
+					  'Type "exit".'),
+			      MessageMenu('What does "." mean?',
+					  '''
+The "." character, known as "full stop" or "period", is most often
+used to indicate the end of a sentence.
+
+It is also used by Dibbler to indicate that the program wants you to
+read some text before continuing.  Whenever some output ends with a
+line containing only a period, you should read the lines above and
+then press enter to continue.
+					  '''),
+			      MessageMenu('Why is the user interface so terribly unintuitive?',
+					  '''
+Answer #1:  It is not.
+
+Answer #2:  We are trying to compete with PVV\'s microwave oven in
+userfriendliness.
+
+Answer #3:  YOU are unintuitive.
+'''),
+			      MessageMenu('Why is there no help command?',
+					  'There is.  Have you tried typing "help"?'),
+			      MessageMenu('Where are the easter eggs?  I tried saying "moo", but nothing happened.',
+					  'Don\'t say "moo".'),
+			      MessageMenu('Why does the program insist on using English even though all the users are Norwegian?',
+					  u'Godt spørsmål.  Det virket sikkert som en god idé der og da.'),
+			      MessageMenu('My question isn\'t listed here; what do I do?',
+					  '''
+DON\'T PANIC.
+
+Follow this procedure:
+
+1. Ask someone (or read the source code) and get an answer.
+
+2. Check out the Dibbler code from https://dev.pvv.ntnu.no/svn/dibbler
+
+3. Add your question (with answer) to the FAQ and commit.
+''')]
+
+
 
 # class ChargeMenu(Menu):
 # 	def __init__(self):
@@ -775,7 +853,8 @@ main = Menu('Dibbler main menu',
 		   AdjustCreditMenu(), TransferMenu(),
 		   Menu('Add/edit',
 			items=[AddUserMenu(), EditUserMenu(),
-			       AddProductMenu(), EditProductMenu()])
+			       AddProductMenu(), EditProductMenu()]),
+		   FAQMenu()
 		   ],
 	    exit_msg='happy happy joy joy',
 	    exit_confirm_msg='Really quit Dibbler?')