typed return values; unchecked cast warnings suppressed