add handling for arbitrary year-lengths