why do we need to allow the class overwrite here? could the user not just call children directly if he wants to specify the class? its the only reason for this function to not have to specify a class manually as far as i can see.