add more methods, not yet tested.