add new buildin functions and improve preprocessor