initial commit

reorganized the project structure and moved to using JS CDNs where
possible.