https://devhubby.com/thread/how-to-override-a-structure-constructor-in-fortran