added token functionality and charge functionality