cleaned up the framework API