added annotatios; throw UnsupportedOperationException instead of returning null