Reworking program flow a little. This commit will break everything.