alias run -> end and support optional callback