sync with martinghunt (no changes)