WIP: Did not finish specs since was not 100% sure on this implementation.