merged with latest original version