refactor LogUtil away and use Exceptions where appropriate