I really like how you structured this code to be data driven, full marks!