Made an implementation for every scenario
Major, needed, refactor.