eliminating destructors through usage of allocatables