thinking of how to implement instantiation