Bringing up to date with master as it is now.