Implementing Software Product Lines using Traits