clean up interface and add options