generalize default custom type prepare_callback