All things done, maybe i'll improve it later