added custom id support