implementation (except options and pay)