make helper functions to singleton
merge completed