add a abstract parser layer