finished user implementation