diff --git a/src/triq.erl b/src/triq.erl
index d7ad750..7d518d7 100644
--- a/src/triq.erl
+++ b/src/triq.erl
@@ -54,7 +54,6 @@
                context=[],
                size=?TEST_COUNT,  %% todo: remove this
                run_iter=?TEST_COUNT,
-               report= fun report_none/2,
                shrinking= false,
                result=undefined,
                body,
@@ -67,35 +66,10 @@
     {ok, triq_rnd} = triq_rand_compat:init("triq_rnd"),
     ok.
 
-%%
-%% Default reporting function, ... is silent
-%%
-report_none(pass, _) ->
-    ok;
-report_none(fail, _) ->
-    ok;
-report_none(skip, _) ->
-    ok.
-
-%%
-%% Reporting function used while testing, prints "..xxxx Failed!"
-%%
-report(pass,_) ->
-    io:format(".");
-report(skip,_) ->
-    io:format("x");
-report(fail,false) ->
-    io:format("Failed!~n");
-report(fail,Value) ->
-    io:format("Failed with: ~p~n", [Value]).
-
-%%
-%%
-%%
-check_input(Fun,Input,IDom,#triq{count=Count,report=DoReport}=QCT) ->
+check_input(Fun,Input,IDom,#triq{count=Count}=QCT) ->
     try Fun(Input) of
         true ->
-            DoReport(pass,true),
+            report(pass,true),
             {success, Count+1};
 
         {success, NewCount} ->
@@ -136,7 +110,7 @@
             end;
 
         {'prop:implies', false, _, _, _} ->
-            DoReport(skip,true),
+            report(skip,true),
             {success, Count};
 
         {'prop:implies', true, _Syntax, Fun2, Body2} ->
@@ -180,7 +154,7 @@
 
                 {'EXIT', PID, Reason} ->
                     process_flag(trap_exit, WasTrap),
-                    DoReport(fail, Reason),
+                    report(fail, Reason),
                     {failure, Fun, Input, IDom,
                      QCT#triq{count=Count+1,result={'EXIT', Reason}}}
 
@@ -191,12 +165,12 @@
                          QCT#triq{body=Body2});
 
         Any ->
-            DoReport(fail,Any),
+            report(fail,Any),
             {failure, Fun, Input, IDom, QCT#triq{count=Count+1,result=Any}}
 
     catch
         Class : Exception ->
-            DoReport(fail, {Class, Exception, erlang:get_stacktrace()}),
+            report(fail, {Class, Exception, erlang:get_stacktrace()}),
             {failure, Fun, Input, IDom, QCT#triq{count=Count+1,
                                                  result={'EXIT',Exception}}}
 
@@ -204,7 +178,7 @@
 
 
 check_timeout(Fun,Input,IDom,Limit,Fun2,
-              #triq{count=Count,report=DoReport}=QCT) ->
+              #triq{count=Count}=QCT) ->
     Main = self(),
     Controller =
         spawn
@@ -229,7 +203,7 @@
 
                        {'EXIT', Slave, Reason} ->
                            %% from Slave
-                           DoReport(fail, Reason),
+                           report(fail, Reason),
                            Main ! {Controller,
                                    {failure, Fun, Input, IDom,
                                     QCT#triq{count=Count+1,
@@ -255,7 +229,7 @@
                     after 5 -> ignore end,
 
                     Reason = {timeout, Limit},
-                    DoReport(fail, Reason),
+                    report(fail, Reason),
                     {failure, Fun, Input, IDom,
                      QCT#triq{count=Count+1,result={'EXIT', Reason}}}
             end,
@@ -315,12 +289,12 @@
 module(Module) when is_atom(Module) ->
     module(Module, ?TEST_COUNT).
 
-module(Module, RunIters) when is_integer(RunIters), RunIters>0 ->
+module(Module, RunIters) when is_integer(RunIters), RunIters > 0 ->
     Info = Module:module_info(exports),
     all(fun({Fun,0}) ->
                 case atom_to_list(Fun) of
                     "prop_" ++ _ ->
-                        io:format("Testing ~p:~p/0~n", [Module, Fun]),
+                        report(testing, [Module, Fun]),
                         check(Module:Fun(), RunIters);
                     _ -> true
                 end;
@@ -382,13 +356,12 @@
     case check_input(fun(nil)->Property end,
                      nil,
                      nil,
-                     #triq{report=fun report/2, run_iter=RunIters,
-                           values=Counterexample}) of
+                     #triq{run_iter=RunIters, values=Counterexample}) of
 
         {failure, Fun, Input, InputDom, #triq{count=Count,context=Ctx,
                                               body=_Body,result=Error}} ->
 
-            io:format("~nFailed after ~p tests with ~p~n", [Count,Error]),
+            report(check_failed, [Count, Error]),
 
             %%
             %% Context is a [{Syntax,Fun,Input,Domain}...] list
@@ -411,22 +384,15 @@
             %% save the counter example
             put('triq:counterexample', CounterExample),
 
-            io:format("Simplified:~n"),
-            print_counter_example(CounterExample),
+            report(counterexample, CounterExample),
 
             Error;
 
         {success, Count} ->
-            io:format("~nRan ~p tests~n", [Count]),
+            report(success, Count),
             true
     end.
 
-print_counter_example(CounterExample) ->
-    lists:foreach(fun({Syntax,_Fun,Val,_Dom}) ->
-                          io:format("\t~s = ~w~n", [Syntax,Val])
-                  end,
-                  CounterExample).
-
 counterexample(Prop) ->
     case check(Prop) of
         true -> true;
@@ -544,3 +510,10 @@
 generate_randomness() ->
     <<A:32, B:32, C:32>> = ?crypto_rand_bytes(12),
     triq_rnd:seed({A, B, C}).
+
+reporter() ->
+    application:get_env(triq, reporter_module, triq_reporter_stdout).
+
+report(Event, Term) ->
+    Reporter = reporter(),
+    Reporter:report(Event, Term).
diff --git a/src/triq_reporter_stdout.erl b/src/triq_reporter_stdout.erl
new file mode 100644
index 0000000..ee60bed
--- /dev/null
+++ b/src/triq_reporter_stdout.erl
@@ -0,0 +1,26 @@
+-module(triq_reporter_stdout).
+-export([report/2]).
+
+report(testing, [Module, Fun]) ->
+    io:format("Testing ~p:~p/0~n", [Module, Fun]);
+report(pass,_) ->
+    io:format(".");
+report(skip,_) ->
+    io:format("x");
+report(fail,false) ->
+    io:format("Failed!~n");
+report(fail,Value) ->
+    io:format("Failed with: ~p~n", [Value]);
+report(check_failed, [Count, Error]) ->
+    io:format("~nFailed after ~p tests with ~p~n", [Count,Error]);
+report(counterexample, CounterExample) ->
+    io:format("Simplified:~n"),
+    print_counter_example(CounterExample);
+report(success, Count) ->
+    io:format("~nRan ~p tests~n", [Count]).
+
+print_counter_example(CounterExample) ->
+    lists:foreach(fun({Syntax,_Fun,Val,_Dom}) ->
+                          io:format("\t~s = ~w~n", [Syntax,Val])
+                  end,
+                  CounterExample).
