beginning of a good implementation