updated create function