https://blog.amaterath.com/posts/c103-declaration/