only works with even sizes