added opaque class