strict implementation