work in progress: redesign the loading, error handling and object initialization in interface.js