Base classes and toolkit for asimov.js