full implementation test