add interfaces for file IO and experiment