Rework of an old university 3rd year project.