added precompiler and more functions