expanded implementation