drop smokeloop, split it into separate functions