added major functionality