try with separation of cases to different modules
make arguments supplied independent
separate `else` and `partial` from key

commit everything