Initial code, needs allot of work.