before going further I feel I need a few advanced generics constraints such as create generics