add ~let (~vs not working)
clean up code