a more flexible create version