implemented solution methods