Can now support user supplied id