Current internal implementation is if-heavy; it could be refactored to two (eventually three) main branches: * struct * tuple struct * [enum](#13)