[ADD] Add basic type declarations and allow for additional overloading of assignments and operators in order to implement all required code generation