use derivable traits where required (these should eventually move to reflect?)