updated for less strict math