refactor to use tokenable concern