swap everything to use the required trait