diff --git a/lib/crass/parser.rb b/lib/crass/parser.rb
index <HASH>..<HASH> 100644
--- a/lib/crass/parser.rb
+++ b/lib/crass/parser.rb
@@ -76,20 +76,32 @@ module Crass
       string = ''
 
       nodes.each do |node|
+        next if node.nil?
+
         case node[:node]
+        when :at_rule
+          string << node[:tokens].first[:raw]
+          string << self.stringify(node[:prelude], options)
+
+          if node[:block]
+            string << self.stringify(node[:block], options)
+          end
+
         when :comment
           string << node[:raw] unless options[:exclude_comments]
 
-        when :style_rule
-          string << self.stringify(node[:selector][:tokens], options)
-          string << "{"
-          string << self.stringify(node[:children], options)
-          string << "}"
-
         when :property
-          string << options[:indent] if options[:indent]
           string << self.stringify(node[:tokens], options)
 
+        when :simple_block
+          string << node[:start]
+          string << self.stringify(node[:value], options)
+          string << node[:end]
+
+        when :style_rule
+          string << self.stringify(node[:selector][:tokens], options)
+          string << "{#{self.stringify(node[:children], options)}}"
+
         else
           if node.key?(:raw)
             string << node[:raw]
Improve serialization of simple blocks and at-rules.

You can now alter the value of a simple block and have those changes
reflected in the serialized CSS (previously simple blocks were
serialized directly from their original tokens).