Updated class, nearly completed