initial implementation, readme and docs