changed the assumption a little, still buggy