Lots of additions, style changes. Still WIP