abstracting ideas out of main files