cleanup and simplified interface