handles now takes type parameter