implement acceptance and unit tests