Refine some features & add spec