added more constructive feedback and added specialization of types through templates which will then give a proper feedback if the type is mismatching.