Custom initializers

  - Changed to use accessor's instead of ivars
  - Removed redundant ivars
  - Switched main code to use new init methods