refine it according to ken's suggestion