Make system polymorphic