overwrite almost everything in source. 3rd working version