seems to be working, needs abstraction
add typecasting abstractions