Added support classes
Added support classes
Main functions implemented