cleaned up API