refactored component data and options API