Vanilla JS implementation with RequireJS

Issue #559