An atm implementation