Not tested!
added some notes