Initial tests implementation
Added Exceptions
Added dependency injection