abstraction refraction