adding new files, continuing to split logic into subfiles