refactor again
LICENCE ADDED