Fixed #21832

1st commit: Updates code, tests and docs.
2nd commit: Way to create fk instance at command line.
I agree with @timgraham re: leaving out a default implementation but making it overridable.