add more methods and spec cases