change api, do not require <T> generic type, use <?>