compile first