diff --git a/CHANGELOG.txt b/CHANGELOG.txt
index 63206aec1565bff02f853794c755187892bc01c4..c7d8823f6dea65ed0cecc7645a210f927bb269ef 100644
--- a/CHANGELOG.txt
+++ b/CHANGELOG.txt
@@ -51,8 +51,10 @@ Drupal x.x.x, xxxx-xx-xx (development version)
 - forms API:
     * made it possible to programmatically submit forms.
     * improved api for multistep forms.
-- split up and removed drupal.css.
-- added nested lists generation.
+- theme system:
+    * split up and removed drupal.css.
+    * added nested lists generation.
+    * added a self-clearing block class.
 
 Drupal 4.7.0, 2006-05-01
 ------------------------
diff --git a/modules/help/help.module b/modules/help/help.module
index c4ae90256962bcc9d295c0331623de3b04bbe0f7..8f6edcbc51f0642f990c8264da9ca8123fbb9ffd 100644
--- a/modules/help/help.module
+++ b/modules/help/help.module
@@ -80,14 +80,14 @@ function help_links_as_list() {
 
   // Output pretty four-column list
   $break = ceil(count($modules) / 4);
-  $output = '<div class="help-items"><ul>';
+  $output = '<div class="help-items clear-block"><ul>';
   foreach ($modules as $i => $module) {
     $output .= '<li>'. l(t($module), 'admin/help/'. $module) .'</li>';
     if (($i + 1) % $break == 0) {
       $output .= '</ul></div><div class="help-items'. ($i + 1 == $break * 3 ? ' help-items-last' : '') .'"><ul>';
     }
   }
-  $output .= '</ul></div><br class="clear" />';
+  $output .= '</ul></div>';
 
   return $output;
 }
diff --git a/modules/node/node.module b/modules/node/node.module
index 488cde59ce69c75bd5b9baedd190a2ff5ccb09e3..216e89a8c8caf1565e708508b2f89b1d09627cde 100644
--- a/modules/node/node.module
+++ b/modules/node/node.module
@@ -1334,7 +1334,7 @@ function theme_node_filter_form($form) {
  * Theme node administraton filter selector.
  */
 function theme_node_filters($form) {
-  $output .= '<ul>';
+  $output .= '<ul class="clear-block">';
   if (sizeof($form['current'])) {
     foreach (element_children($form['current']) as $key) {
       $output .= '<li>' . drupal_render($form['current'][$key]) . '</li>';
@@ -1356,7 +1356,7 @@ function theme_node_filters($form) {
 
   $output .= '</dl>';
   $output .= '<div class="container-inline" id="node-admin-buttons">'. drupal_render($form['buttons']) .'</div>';
-  $output .= '</li></ul><br class="clear" />';
+  $output .= '</li></ul>';
 
   return $output;
 }
@@ -2440,8 +2440,8 @@ function node_form_alter($form_id, &$form) {
     $form['advanced']['submit'] = array(
       '#type' => 'submit',
       '#value' => t('Advanced search'),
-      '#prefix' => '<div class="action">',
-      '#suffix' => '</div><br class="clear" />',
+      '#prefix' => '<div class="action clear-block">',
+      '#suffix' => '</div>',
     );
 
     $form['#validate']['node_search_validate'] = array();
diff --git a/modules/system/defaults.css b/modules/system/defaults.css
index 58f17d7b70a385b44ac1fbfba38df3f306a6d77f..87b45d74cab1d166b680d60da7602b7f6a639969 100644
--- a/modules/system/defaults.css
+++ b/modules/system/defaults.css
@@ -26,7 +26,28 @@ th {
   padding-right: 1em;
   border-bottom: 3px solid #ccc;
 }
-br.clear {
-  clear: both;
+
+/*
+** Markup free clearing
+** Details: http://www.positioniseverything.net/easyclearing.html
+*/
+.clear-block:after {
+  content: ".";
+  display: block;
   height: 0;
+  clear: both;
+  visibility: hidden;
+}
+
+.clear-block {
+  display: inline-block;
+}
+
+/* Hides from IE-mac \*/
+* html .clear-block {
+  height: 1%;
+}
+.clear-block {
+  display: block;
 }
+/* End hide from IE-mac */
diff --git a/modules/user/user.module b/modules/user/user.module
index 7ef97b1cd49e5b23166de233d91bb5d906f40e45..ad93224465a4c91d41091a8b96608c2fc66e74db 100644
--- a/modules/user/user.module
+++ b/modules/user/user.module
@@ -2504,7 +2504,7 @@ function theme_user_filter_form($form) {
  * Theme user administraton filter selector.
  */
 function theme_user_filters($form) {
-  $output .= '<ul>';
+  $output .= '<ul class="clear-block">';
   if (sizeof($form['current'])) {
     foreach (element_children($form['current']) as $key) {
       $output .= '<li>'. drupal_render($form['current'][$key]) .'</li>';
@@ -2526,7 +2526,7 @@ function theme_user_filters($form) {
 
   $output .= '</dl>';
   $output .= '<div class="container-inline" id="user-admin-buttons">'. drupal_render($form['buttons']) .'</div>';
-  $output .= '</li></ul><br class="clear" />';
+  $output .= '</li></ul>';
 
   return $output;
 }
diff --git a/themes/engines/phptemplate/comment.tpl.php b/themes/engines/phptemplate/comment.tpl.php
index 2456c5819145695e925f2bf69bc2882e61d7d48c..d9dc3fd360338e465c554fb2251b3893c5d654e0 100644
--- a/themes/engines/phptemplate/comment.tpl.php
+++ b/themes/engines/phptemplate/comment.tpl.php
@@ -1,15 +1,12 @@
-<div class="comment<?php print ($comment->new) ? ' comment-new' : ''; print ($comment->status == COMMENT_NOT_PUBLISHED) ? ' comment-unpublished' : ''; ?>">
-<?php if ($comment->new) : ?>
+<div class="comment<?php print ($comment->new) ? ' comment-new' : ''; print ($comment->status == COMMENT_NOT_PUBLISHED) ? ' comment-unpublished' : ''; ?> clear-block">
+  <?php if ($comment->new) : ?>
   <a id="new"></a>
   <span class="new"><?php print $new ?></span>
-<?php endif; ?>
+  <?php endif; ?>
 
-<div class="title"><?php print $title ?></div>
+  <div class="title"><?php print $title ?></div>
   <?php print $picture ?>
   <div class="author"><?php print $submitted ?></div>
   <div class="content"><?php print $content ?></div>
-  <?php if ($picture) : ?>
-    <br class="clear" />
-  <?php endif; ?>
   <div class="links"><?php print $links ?></div>
 </div>
diff --git a/themes/engines/phptemplate/node.tpl.php b/themes/engines/phptemplate/node.tpl.php
index 028aeb3ce809dcbe70965f43df0735ac210f74cf..6da68532915901e9647febadf271745b57a8efcd 100644
--- a/themes/engines/phptemplate/node.tpl.php
+++ b/themes/engines/phptemplate/node.tpl.php
@@ -1,4 +1,4 @@
-<div class="node<?php if ($sticky) { print " sticky"; } ?><?php if (!$status) { print " node-unpublished"; } ?>">
+<div class="node<?php if ($sticky) { print " sticky"; } ?><?php if (!$status) { print " node-unpublished"; } ?> clear-block">
   <?php if ($page == 0): ?>
     <h2><a href="<?php print $node_url ?>" title="<?php print $title ?>"><?php print $title ?></a></h2>
   <?php endif; ?>
@@ -8,11 +8,8 @@
   <div class="content">
     <?php print $content ?>
   </div>
-<?php if ($links): ?>
 
-    <?php if ($picture): ?>
-      <br class='clear' />
-    <?php endif; ?>
-    <div class="links"><?php print $links ?></div>
-<?php endif; ?>
+  <?php if ($links): ?>
+  <div class="links"><?php print $links ?></div>
+  <?php endif; ?>
 </div>