reengineering, previous version was fragile to conflicts in names