compile before usage