abstract this out
use the guard here too