add one degree of freedom for add()
add randomness