more specs and implementation