refactore (WIP)