separate obstruction parsing into a module