added all necessary methods