allow codes to be used multiple times
add expiration to codes