Call methods as their respective interface suggest

 - make sure every method invocation is strict on parameter specification
 - don't assume `amd` to be defined when checking for whether it is defined or not; use a dictionary-lookup instead