yep, this is definitely way better than subclassing F