update from swizzy's sources