Did a little refactor to be more enum friendly. Check it out.