auto create function