add potter
add potter spec and impl