Updated with latest changes from various sites