change markdown engine to Text::Markdown::Discount and improve design