WIP Need implement test, and think the use case