initial pass at spec