simpler and still not tested, only thing left is to break it