Adopted some changes from Dima's branch:

- Factored out _setup method, but made it be called by default, and
  hence removed the create method.
- Decorator for apply methods, removing output_modes.
- Changes to parameter initialization, but keeping the initialization to
  zero-sized parameters for speed and fault-tolerance.