Version 1.0 with interface methods.