- c functions for abstract elements also need to create concrete ones