focusinout is almost done

the main idea behind my changes is to decouple the shims, then it could
be loaded only when it is needed, I mean the other part of it should be
like a package manager which loads the shim modules if they are needed.