Add new test and some implementations