basic piece implementation