This seems pretty complicated but why not?