moved parser into dedicated module