preliminary draft with all instantiation