Totally refactor
Update comment