added pipelining