implement elixir compile