finish revisions
add custom id generator