simple implementations and specs