added more optimized funcs