Index: /main/waeup.ikoba/trunk/src/waeup/ikoba/customers/tests/test_browser.py
===================================================================
--- /main/waeup.ikoba/trunk/src/waeup/ikoba/customers/tests/test_browser.py	(revision 12342)
+++ /main/waeup.ikoba/trunk/src/waeup/ikoba/customers/tests/test_browser.py	(revision 12343)
@@ -1293,8 +1293,8 @@
         # from the chosen product.
         self.assertTrue('<option selected="selected" value="Any product option">'
-                        'Any product option @ 88.8 EUR</option>'
+                        'Any product option @ 88.8 Euro</option>'
                         in self.browser.contents)
         self.assertTrue('<option value="First option">First option '
-                        '@ 99.9 USD</option>' in self.browser.contents)
+                        '@ 99.9 US Dollar</option>' in self.browser.contents)
         # In test browser we can at least replace the option
         self.browser.getControl(
@@ -1304,5 +1304,5 @@
         self.assertEqual(contract.product_options[0].title, 'First option')
         self.browser.getLink("View").click()
-        self.assertTrue('<span>First option @ 99.9 USD</span>' in self.browser.contents)
+        self.assertTrue('<span>First option @ 99.9 US Dollar</span>' in self.browser.contents)
         self.assertEqual(self.browser.url, self.contracts_path + '/%s/index' % conid)
         # An href attribute is referring to the document and product objects
Index: /main/waeup.ikoba/trunk/src/waeup/ikoba/customers/vocabularies.py
===================================================================
--- /main/waeup.ikoba/trunk/src/waeup/ikoba/customers/vocabularies.py	(revision 12342)
+++ /main/waeup.ikoba/trunk/src/waeup/ikoba/customers/vocabularies.py	(revision 12343)
@@ -33,4 +33,5 @@
 from waeup.ikoba.utils.helpers import get_sorted_preferred
 from waeup.ikoba.utils.countries import COUNTRIES
+from waeup.ikoba.payments.currencies import ISO_4217_CURRENCIES
 
 #: a tuple of tuples (<COUNTRY-NAME>, <ISO-CODE>) with Nigeria first.
@@ -203,3 +204,4 @@
 
     def getTitle(self, context, value):
-        return "%s @ %s %s" % (value.title, value.fee, value.currency)
+        currency = ISO_4217_CURRENCIES[value.currency][1]
+        return "%s @ %s %s" % (value.title, value.fee, currency)
Index: /main/waeup.ikoba/trunk/src/waeup/ikoba/interfaces.py
===================================================================
--- /main/waeup.ikoba/trunk/src/waeup/ikoba/interfaces.py	(revision 12342)
+++ /main/waeup.ikoba/trunk/src/waeup/ikoba/interfaces.py	(revision 12343)
@@ -86,10 +86,4 @@
             SimpleTerm(value, value, title) for title, value in terms])
 
-currencies = SimpleIkobaVocabulary(
-    (_('NGN'),'NGN'),
-    (_('USD'),'USD'),
-    (_('EUR'),'EUR'),
-    )
-
 class ContextualDictSourceFactoryBase(SmartBasicContextualSourceFactory):
     """A base for contextual sources based on IkobaUtils dicts.
@@ -211,31 +205,4 @@
         return value
 
-# We have to keep the following two classes here. In products.interfaces they
-# will cause circular imports.
-class IProductOption(Interface):
-    """A product option entry.
-
-    """
-    title = schema.TextLine(
-        title = _(u'Title'),
-        required = True,
-        )
-    fee = schema.Decimal(
-        title = _(u'Fee'),
-        required = False,
-        )
-    currency = schema.Choice(
-        title = _(u'Currency'),
-        vocabulary = currencies,
-        required = False,
-        )
-
-class IProductOptionField(IObject):
-    """A zope.schema-like field for usage in interfaces.
-
-    Marker interface to distuingish product options from ordinary
-    object fields. Needed for registration of widgets.
-    """
-
 class IIkobaUtils(Interface):
     """A collection of methods which are subject to customization.
Index: /main/waeup.ikoba/trunk/src/waeup/ikoba/products/productoptions.py
===================================================================
--- /main/waeup.ikoba/trunk/src/waeup/ikoba/products/productoptions.py	(revision 12342)
+++ /main/waeup.ikoba/trunk/src/waeup/ikoba/products/productoptions.py	(revision 12343)
@@ -16,16 +16,52 @@
 ## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
 ##
-"""Components representing and aggregating product options.
+"""Components with interfaces representing and aggregating product options.
 """
 import grok
 from decimal import Decimal
+from zope import schema
+from zope.schema.interfaces import IObject
+from zope.interface import Attribute, Interface
 from zope.formlib.interfaces import IInputWidget, IDisplayWidget
 from zope.publisher.interfaces.browser import IBrowserRequest
 from zope.schema.fieldproperty import FieldProperty
 from zope.schema import Object
-from waeup.ikoba.interfaces import IProductOption, IProductOptionField
+from waeup.ikoba.interfaces import SimpleIkobaVocabulary
+from waeup.ikoba.interfaces import MessageFactory as _
 from waeup.ikoba.widgets.objectwidget import (
     IkobaObjectWidget, IkobaObjectDisplayWidget
     )
+from waeup.ikoba.payments.currencies import ISO_4217_CURRENCIES_VOCAB as currencies
+
+#currencies = SimpleIkobaVocabulary(
+#    (_('NGN'),'NGN'),
+#    (_('USD'),'USD'),
+#    (_('EUR'),'EUR'),
+#    )
+
+class IProductOption(Interface):
+    """A product option entry.
+
+    """
+    title = schema.TextLine(
+        title = _(u'Title'),
+        required = True,
+        )
+    fee = schema.Decimal(
+        title = _(u'Fee'),
+        required = False,
+        )
+    currency = schema.Choice(
+        title = _(u'Currency'),
+        vocabulary = currencies,
+        required = False,
+        )
+
+class IProductOptionField(IObject):
+    """A zope.schema-like field for usage in interfaces.
+
+    Marker interface to distuingish product options from ordinary
+    object fields. Needed for registration of widgets.
+    """
 
 class ProductOption(grok.Model):
Index: /main/waeup.ikoba/trunk/src/waeup/ikoba/products/tests/test_productoptions.py
===================================================================
--- /main/waeup.ikoba/trunk/src/waeup/ikoba/products/tests/test_productoptions.py	(revision 12342)
+++ /main/waeup.ikoba/trunk/src/waeup/ikoba/products/tests/test_productoptions.py	(revision 12343)
@@ -5,6 +5,7 @@
 from zope.interface.verify import verifyObject, verifyClass
 from zope.schema.interfaces import ConstraintNotSatisfied, WrongType
-from waeup.ikoba.interfaces import IProductOption, IProductOptionField, IIkobaUtils
-from waeup.ikoba.products.productoptions import ProductOption, ProductOptionField
+from waeup.ikoba.interfaces import  IIkobaUtils
+from waeup.ikoba.products.productoptions import (
+    IProductOption, IProductOptionField, ProductOption, ProductOptionField)
 from waeup.ikoba.utils.utils import IkobaUtils
 
Index: /main/waeup.ikoba/trunk/src/waeup/ikoba/utils/converters.py
===================================================================
--- /main/waeup.ikoba/trunk/src/waeup/ikoba/utils/converters.py	(revision 12342)
+++ /main/waeup.ikoba/trunk/src/waeup/ikoba/utils/converters.py	(revision 12343)
@@ -30,8 +30,9 @@
 from zope.schema.interfaces import IList
 from waeup.ikoba.interfaces import (
-    IObjectConverter, IProductOptionField, IFieldConverter,
+    IObjectConverter, IFieldConverter,
     DELETION_MARKER, IGNORE_MARKER)
 from waeup.ikoba.schema.interfaces import IPhoneNumber
-from waeup.ikoba.products.productoptions import ProductOption
+from waeup.ikoba.products.productoptions import (
+    IProductOptionField, ProductOption)
 
 class ExtendedCheckBoxWidget(CheckBoxWidget):
