Compose your own javascript framework