Allow different rescheduling criteria for different types of tasks.
Separate the responsibility of parsing lines from reading files.
Rename LineBuffer to LineParser.
Update the schedule framework to support multiple schedule implementations and add a periodic schedule.
Create a base module for foundational classes.
Delete files that are no longer needed.