still need a way to select which constructor to use (either by using annotation or finding out which one to use depending on the bindings)