use generic references