refactor API modules so that we just pass around individual arguments instead of [arguments] which requires a translation layer