https://5dok.net/document/q5mnr1p7-writing-reusable-code-for-robotics.html