first working version with non-projectivity