tested program, diagrams still need work