finally they all work