defualts work\!, parameterized type annotations are recursive as well
fixed double array around args of Choose* parameterized types