Full implementation of assignment