added most things, still needs work done on it
more refinement, still needs work
add linum to c mode