- finished first draft implementation