decoding in background performed only when needed(for #57), minor concurency fixes and optimizations