Add more test and implementations