Resolve Madhu's changes from yesterday.
diff --git a/app/soc/content/css/v2/gci/style.css b/app/soc/content/css/v2/gci/style.css
index 8f9026e..98511f1 100644
--- a/app/soc/content/css/v2/gci/style.css
+++ b/app/soc/content/css/v2/gci/style.css
@@ -1463,9 +1463,17 @@
         padding-right: 30px;
         text-align: center;
     }
-    .block-participating-orgs img {
-        margin: 0 5px 10px 5px;
+    .block-participating-orgs .participating-orgs-table {
+        margin: auto;
+    }
+    .participating-orgs-table td {
         vertical-align: middle;
+        text-align: center;
+    }
+    .block-participating-orgs img {
+        padding: 5px;
+        vertical-align: middle;
+        text-align: center;
         max-height: 65px;
         max-width: 65px;
     }
diff --git a/app/soc/logic/organization.py b/app/soc/logic/organization.py
index e2501fb..c45e6ac 100644
--- a/app/soc/logic/organization.py
+++ b/app/soc/logic/organization.py
@@ -52,12 +52,15 @@
   return q
 
 
-def participating(model, program):
+def participating(model, program, org_count=None):
   """Return a list of organizations to display on program homepage.
 
   Args:
     program: program entity for which the orgs need to be fetched.
+    org_count: The number of organizations to return (if possible).
   """
+  org_count = org_count or _BATCH_SIZE
+
   # expiry time to fetch the new organization entities
   # the current expiry time is 30 minutes.
   expiry_time = datetime.timedelta(seconds=1800)
@@ -67,7 +70,7 @@
   # the cache stores a 3-tuple in the order list of org entities,
   # cursor and the last time the cache was updated
 
-  key = 'participating_orgs_for' + program.key().name()
+  key = '%s_participating_orgs_for_%s' % (org_count, program.key().name())
   po_cache = memcache.get(key)
 
   if po_cache:
@@ -77,11 +80,11 @@
     else:
       q.with_cursor(cached_cursor)
 
-  orgs = _orgsWithLogoForQuery(q, _BATCH_SIZE)
+  orgs = _orgsWithLogoForQuery(q, org_count)
 
-  if len(orgs) < _BATCH_SIZE:
+  if len(orgs) < org_count:
     q = _orgWithLogoQuery(model, program)
-    extra_orgs = _orgsWithLogoForQuery(q, _BATCH_SIZE - len(orgs))
+    extra_orgs = _orgsWithLogoForQuery(q, org_count - len(orgs))
 
     # add only those orgs which are not already in the list
     orgs_keys = [o.key() for o in orgs]
diff --git a/app/soc/modules/gci/logic/organization.py b/app/soc/modules/gci/logic/organization.py
index f306d3e..f3e8803 100644
--- a/app/soc/modules/gci/logic/organization.py
+++ b/app/soc/modules/gci/logic/organization.py
@@ -50,7 +50,7 @@
   return org.task_quota_limit - q.count()
 
 
-def participating(program):
+def participating(program, org_count=None):
   """Return a list of GCI organizations to display on GCI program homepage.
 
   Function that acts as a GCI module wrapper for fetching participating
@@ -58,8 +58,9 @@
 
   Args:
     program: GCIProgram entity for which the orgs need to be fetched.
+    org_count: The number of organizations to return (if possible).
   """
-  return org_logic.participating(GCIOrganization, program)
+  return org_logic.participating(GCIOrganization, program, org_count=org_count)
 
 
 def queryForProgramAndStatus(program, status, keys_only=False):
diff --git a/app/soc/modules/gci/views/homepage.py b/app/soc/modules/gci/views/homepage.py
index bf98431..36fc688 100644
--- a/app/soc/modules/gci/views/homepage.py
+++ b/app/soc/modules/gci/views/homepage.py
@@ -114,8 +114,10 @@
 
 
 class ParticipatingOrgs(Template):
-  """Participating orgs template.
-  """
+  """Participating orgs template."""
+
+  _TABLE_WIDTH = 5
+  _ORG_COUNT = 10
 
   def __init__(self, data):
     self.data = data
@@ -124,7 +126,8 @@
     r = self.data.redirect
 
     participating_orgs = []
-    current_orgs = org_logic.participating(self.data.program)
+    current_orgs = org_logic.participating(
+        self.data.program, org_count=self._ORG_COUNT)
     for org in current_orgs:
       participating_orgs.append({
           'link': r.orgHomepage(org.link_id).url(),
@@ -132,10 +135,21 @@
           'name': org.short_name,
           })
 
+    participating_orgs_table_rows = []
+    orgs = list(participating_orgs)
+    while True:
+      if len(orgs) <= self._TABLE_WIDTH:
+        participating_orgs_table_rows.append(orgs)
+        break
+      else:
+        row, orgs = orgs[:self._TABLE_WIDTH], orgs[self._TABLE_WIDTH:]
+        participating_orgs_table_rows.append(row)
+
     accepted_orgs_url = r.program().urlOf('gci_accepted_orgs')
 
     return {
         'participating_orgs': participating_orgs,
+        'participating_orgs_table_rows': participating_orgs_table_rows,
         'org_list_url': accepted_orgs_url,
     }
 
diff --git a/app/soc/templates/v2/modules/gci/homepage/_participating_orgs.html b/app/soc/templates/v2/modules/gci/homepage/_participating_orgs.html
index 7869eb5..4522d49 100644
--- a/app/soc/templates/v2/modules/gci/homepage/_participating_orgs.html
+++ b/app/soc/templates/v2/modules/gci/homepage/_participating_orgs.html
@@ -1,12 +1,20 @@
-{% if participating_orgs %}
-  <div class="block block-participating-orgs">
-    <div class="block-title">Participating Organizations</div>
-    <div class="block-content">
-      {% for org in participating_orgs %}
+{% if participating_orgs_table_rows %}
+ <div class="block block-participating-orgs">
+  <div class="block-title">Participating Organizations</div>
+  <div class="block-content">
+   <table class="participating-orgs-table">
+    {% for row in participating_orgs_table_rows %}
+     <tr>
+      {% for org in row %}
+       <td>
         <a href="{{ org.link }}"><img src="{{ org.logo }}" alt="{{ org.name }} logo" title="{{ org.name }}"/></a>
+       </td>
       {% endfor %}
-    </div>
-    <div class="block-footer"><a href="{{ org_list_url }}">See all participating organizations</a></div>
+     </tr>
+    {% endfor %}
+   </table>
   </div>
+  <div class="block-footer"></div>
+ </div>
 {% endif %}
 <!-- end .block.block-home-participating-orgs -->
diff --git a/tests/app/soc/modules/gci/logic/test_organization.py b/tests/app/soc/modules/gci/logic/test_organization.py
index e959a89..077b00d 100644
--- a/tests/app/soc/modules/gci/logic/test_organization.py
+++ b/tests/app/soc/modules/gci/logic/test_organization.py
@@ -69,16 +69,19 @@
     """Tests if a list of all the organizations participating in a given gci
     program is returned.
     """
+    test_org_count = 2
     expected = []
     actual = organization_logic.participating(self.program)
     self.assertEqual(expected, actual)
     org1 = self.gci_program_helper.createOrg()
     org2 = self.gci_program_helper.createNewOrg()
-    #We need to clear the cache with the key given below as the first call to
-    #the function being tested sets an empty cache with the same key.
-    key = 'participating_orgs_for' + self.program.key().name()
+    # We need to clear the cache with the key given below as the first call to
+    # the function being tested sets an empty cache with the same key.
+    key = '%s_participating_orgs_for_%s' % (
+        test_org_count, self.program.key().name())
     memcache.delete(key)
     expected = set([org1.key(), org2.key()])
-    actual = organization_logic.participating(self.gci_program_helper.program)
+    actual = organization_logic.participating(
+        self.gci_program_helper.program, org_count=test_org_count)
     actual = set([org.key() for org in actual])
     self.assertEqual(expected, set(actual))