using S4 methods for subset()