Did some refactoring
Added support for more types