partially implemented solution