Abstract parsing

Move parsing and object building into slightly more utility objects that should be easy to override.