Getting closer to final (messy) API