Style adjustments
Unnecessary to check None values
Prefer abstract base class over concrete int type

Why we should prefer numbers.Integeral which is
an abstract base class over int which is a
concrete one?  There could be several reasons for
this:

1. Portability: Python 2.x have actually two
   concrete integral types: int and long.
   We will fail when try isinstance(0L, int).

2. Flexibility: There might be custom types that
   behave like integer, actually subclasses
   numbers.Integral.  These also should be dealt.
Docstring adjustments