implemented all the alternative method