Review

a lot of code changed
on lime 369: no need to create another Handler, you can use one handler with multiple Runnables (you already have readerHandler)