First factory implementation (WIP)