diff --git a/beat/web/algorithms/views.py b/beat/web/algorithms/views.py
index c64cbf44fa1094eda76cbdf73b7459d5696c927f..b6663f2adf569982e9f2eff9658a498c933eac39 100755
--- a/beat/web/algorithms/views.py
+++ b/beat/web/algorithms/views.py
@@ -35,6 +35,7 @@ from django.contrib.auth.models import User
 from .models import Algorithm
 from ..team.models import Team
 from ..common.texts import Messages
+from ..common.utils import ensure_string
 from ..ui.templatetags.markup import restructuredtext
 
 from beat.core import prototypes
@@ -72,10 +73,10 @@ def create(request, name=None):
 
         previous_version = previous_versions[0]
 
-        description = previous_version.description
+        description = ensure_string(previous_version.description)
 
         parameters['algorithm_version']       = previous_version.version + 1
-        parameters['declaration']             = previous_version.declaration_file.read().replace('\n', '')
+        parameters['declaration']             = previous_version.declaration_string.replace('\n', '')
         parameters['short_description']       = previous_version.short_description
         parameters['description']             = description.replace('\n', '\\n')
         parameters['html_description']        = restructuredtext(description).replace('\n', '')
@@ -87,7 +88,7 @@ def create(request, name=None):
         if not previous_version.is_binary():
             parameters['source_code'] = previous_version.source_code_file.read()
     else:
-        parameters['source_code'] = prototypes.binary_load('algorithm.py')  \
+        parameters['source_code'] = ensure_string(prototypes.binary_load('algorithm.py'))  \
             .replace('\n\n        # TODO: Implement this algorithm\n\n',
                      '\n        # TODO: Implement this algorithm\n')
         declaration, errors = prototypes.load('algorithm')
@@ -119,7 +120,7 @@ def fork(request, author, name, version):
     if fork_of.sharing == Algorithm.USABLE and fork_of.author != request.user:
       raise Http404()
 
-    description = fork_of.description
+    description = ensure_string(fork_of.description)
 
     parameters = {'original_author':         author,
                   'algorithm_author':        request.user.username,
@@ -127,7 +128,7 @@ def fork(request, author, name, version):
                   'algorithm_version':       fork_of.version,
                   'algorithm_language':      fork_of.json_language,
                   'algorithm_language_name': fork_of.language_fullname(),
-                  'declaration':             fork_of.declaration_file.read().replace('\n', ''),
+                  'declaration':             fork_of.declaration_string.replace('\n', ''),
                   'short_description':       fork_of.short_description,
                   'description':             description.replace('\n', '\\n'),
                   'html_description':        restructuredtext(description).replace('\n', ''),
@@ -168,14 +169,14 @@ def edit(request, author, name, version):
         return HttpResponseForbidden('Algorithm %s is not modifiable' % \
                                      algorithm.fullname())
 
-    description = algorithm.description
+    description = ensure_string(algorithm.description)
 
     parameters = {'algorithm_author':        request.user.username,
                   'algorithm_name':          name,
                   'algorithm_version':       algorithm.version,
                   'algorithm_language':      algorithm.json_language,
                   'algorithm_language_name': algorithm.language_fullname(),
-                  'declaration':             algorithm.declaration_file.read().replace('\n', ''),
+                  'declaration':             algorithm.declaration_string.replace('\n', ''),
                   'short_description':       algorithm.short_description,
                   'description':             description.replace('\n', '\\n'),
                   'html_description':        restructuredtext(description).replace('\n', ''),