ditto. part3. final. Tested