[CHANGE] Change string message to object.
[CHANGE] Refactoring.
[ADD][CHANGE] Add throwable argument for log messages and refactor some
code.