separated into cat-theory and main file