some other improvements possibly not optimized enough yet or overyl short circuiting....