begin initial implementation