implemented required methods