piece implimintation