implemented remaining methods