implemented spec