add and improve parser