added some intro to implementation