sorted out possible api, starting on impl