this might be hard to understand but ...