diff --git a/serial/serialposix.py b/serial/serialposix.py
index df73633..8c32bd9 100644
--- a/serial/serialposix.py
+++ b/serial/serialposix.py
@@ -738,7 +738,7 @@
     def _reconfigure_port(self, force_update=True):
         """Set communication parameters on opened port."""
         super(VTIMESerial, self)._reconfigure_port()
-        fcntl.fcntl(self.fd, fcntl.F_SETFL, 0) # clear O_NONBLOCK
+        fcntl.fcntl(self.fd, fcntl.F_SETFL, 0)  # clear O_NONBLOCK
 
         if self._inter_byte_timeout is not None:
             vmin = 1
@@ -762,7 +762,6 @@
                 termios.TCSANOW,
                 [iflag, oflag, cflag, lflag, ispeed, ospeed, cc])
 
-
     def read(self, size=1):
         """\
         Read size bytes from the serial port. If a timeout is set it may
diff --git a/serial/serialutil.py b/serial/serialutil.py
index eb83b67..f435007 100644
--- a/serial/serialutil.py
+++ b/serial/serialutil.py
@@ -115,25 +115,21 @@
     STOPBITS = (STOPBITS_ONE, STOPBITS_ONE_POINT_FIVE, STOPBITS_TWO)
 
     def __init__(self,
-                 port=None,             # number of device, numbering starts at
-                                        # zero. if everything fails, the user
-                                        # can specify a device string, note
-                                        # that this isn't portable anymore
-                                        # port will be opened if one is specified
-                 baudrate=9600,         # baud rate
-                 bytesize=EIGHTBITS,    # number of data bits
-                 parity=PARITY_NONE,    # enable parity checking
-                 stopbits=STOPBITS_ONE, # number of stop bits
-                 timeout=None,          # set a timeout value, None to wait forever
-                 xonxoff=False,         # enable software flow control
-                 rtscts=False,          # enable RTS/CTS flow control
-                 write_timeout=None,    # set a timeout for writes
-                 dsrdtr=False,          # None: use rtscts setting, dsrdtr override if True or False
-                 inter_byte_timeout=None, # Inter-character timeout, None to disable
+                 port=None,
+                 baudrate=9600,
+                 bytesize=EIGHTBITS,
+                 parity=PARITY_NONE,
+                 stopbits=STOPBITS_ONE,
+                 timeout=None,
+                 xonxoff=False,
+                 rtscts=False,
+                 write_timeout=None,
+                 dsrdtr=False,
+                 inter_byte_timeout=None,
                  **kwargs
                  ):
         """\
-        Initialize comm port object. If a port is given, then the port will be
+        Initialize comm port object. If a "port" is given, then the port will be
         opened immediately. Otherwise a Serial port object in closed state
         is returned.
         """
@@ -212,7 +208,6 @@
         if was_open:
             self.open()
 
-
     @property
     def baudrate(self):
         """Get the current baud rate setting."""
@@ -236,7 +231,6 @@
             if self.is_open:
                 self._reconfigure_port()
 
-
     @property
     def bytesize(self):
         """Get the current byte size setting."""
@@ -251,8 +245,6 @@
         if self.is_open:
             self._reconfigure_port()
 
-
-
     @property
     def parity(self):
         """Get the current parity setting."""
@@ -267,8 +259,6 @@
         if self.is_open:
             self._reconfigure_port()
 
-
-
     @property
     def stopbits(self):
         """Get the current stop bits setting."""
@@ -283,7 +273,6 @@
         if self.is_open:
             self._reconfigure_port()
 
-
     @property
     def timeout(self):
         """Get the current timeout setting."""
@@ -303,7 +292,6 @@
         if self.is_open:
             self._reconfigure_port()
 
-
     @property
     def write_timeout(self):
         """Get the current timeout setting."""
@@ -324,7 +312,6 @@
         if self.is_open:
             self._reconfigure_port()
 
-
     @property
     def inter_byte_timeout(self):
         """Get the current inter-character timeout setting."""
@@ -345,7 +332,6 @@
         if self.is_open:
             self._reconfigure_port()
 
-
     @property
     def xonxoff(self):
         """Get the current XON/XOFF setting."""
@@ -358,7 +344,6 @@
         if self.is_open:
             self._reconfigure_port()
 
-
     @property
     def rtscts(self):
         """Get the current RTS/CTS flow control setting."""
@@ -371,7 +356,6 @@
         if self.is_open:
             self._reconfigure_port()
 
-
     @property
     def dsrdtr(self):
         """Get the current DSR/DTR flow control setting."""
@@ -389,7 +373,6 @@
         if self.is_open:
             self._reconfigure_port()
 
-
     @property
     def rts(self):
         return self._rts_state
