Second commit. Alot of changes.