void mk_change(change_list &l, change::Action a, const owl_diff::relation &r, const set<tile_t> &t) {
  change c(a, change::Relation, r.id, r.version, r.changeset, r.uid, r.timestamp, t);
  l.push_back(c);
}
void mk_change(change_list &l, change::Action a, const owl_diff::way &w, const set<tile_t> &t) {
  change c(a, change::Way, w.id, w.version, w.changeset, w.uid, w.timestamp, t);
  l.push_back(c);
}
void list_all_changes(const change_list &c) {
  for (list<owl_diff::change>::const_iterator itr = c.begin(); itr != c.end(); ++itr) {
    list_change(*itr);
  }
}
void mk_change(change_list &l, change::Action a, const owl_diff::node &n, const set<tile_t> &t) {
  change c(a, change::Node, n.id, n.version, n.changeset, n.uid, n.timestamp, t);
  l.push_back(c);
}
// note: may need to remove reference from b, as the STL doesn't
// seem to like this.
inline void splice_changes(change_list &a, change_list b) {
  a.splice(a.end(), b);
}