Implimented all methods