make custom interface optional, add lazy service setup, update readme and example