4/5 with some minor flaws that are easily fixed