Massively simplify API - fixes #3