Add programmatic API

Detail are in the doc. 

@arikon @scf2k 
я бы убрал здесь `else` ты же в предыдущем шаге меняешь переменную `reporter` будет нелишним ее еще раз проверить