use a method overloading technique instead of multiple classes to allow method chaining and static calls