added elixir implementation