add spec and TODOs