My first 900+ lines code.