Initial Commit of rewriting for OOP.