added explicit api-module boundaries and switched to manifest objects