lets spike an implementation first