improved PID lib