https://www.itoosoft.com/blog/creating-parametric-shelving