niiiice
refactored everything and included `symbol` type