separate facts from logic