use proper callback style
run as service if not required