refactor with concerns
add lib tokenable