todo deal with different ply input