update components
add interface for more sources