new: timeout and singleShot functions
fix: start() cant be called while singleshooting
test: add timeout and singleShot