drop reflection in favour of late static binding