Validation

Added validation of values passed. Throwing LogicException if some obligatory values are missing.

Default values were getting overwritten in __construct if user did not specify them. Therefore I moved default values to __contruct.