(#4) - replaced digest engine to use a separate state container
(#5) - report generation enginer updated