A basic implementation without most of the extensions