many changes, going to use lxml