Based on GLM, with a simple viewer