more test and implementation