Removed dependency to signals; used callbacks instead