partial implementation completed