updated to more recent soruces