refactor modules so they actually bail when things are missing