segregated witness – Parsing raw transaction vs. raw segwit transaction

I am writing a bitcoin blkXXXX.dat files parser for my own project. It works well with non-segwit transactions, but I have problems with SegWit transactions.
Currently I read: version (4 bytes), inputsConter (varint), read and parse all inputs, outputsCounter(varint), read and parse all outputs, locktime(4 bytes).
I do not need signatures, but I need to parse these transactions. Can you please help me fix my program?

Many thanks!