this is the partial version.
working partial version