using self instead of input arg
Using serial queue (experimental)