make object and container types generic