some improvements :O