added default array for params in constructor
refactored to remove underscores from private/protected method names