Component programming for Scala