Finitely generated modules over a principal ideal domain