https://www.trql.fm/developers/articles-uml-part1/