initial completed implementation