even more updated diagram