add method_missing and test cases