adding some more generic structure