scan and current pos are now callbacks